게시판 본문 ASP, ASP.NET, IIS & Script - Read Only

re: 또 질물을... ^^;
작성자: 송원석
작성일시: 2003-06-24 23:28,  조회수: 4,004
송원석 입니다. ^_^

저도 SQL 쿼리를 처음 배우면서 이놈의 날짜형 처리를 못해서 한참을 고생했었던 적이 있습니다. 지금도 가끔 버벅거리는 것은 마찮가지지만요... ^_^;;;

일단 오류가 나는 건에 대해서 말씀드리면 입력시 그 값을 '2003-06-24 오전 2:20:00' 라고 하지 마시고, '2003-06-24 02:20:00' 또는 '2003-06-25 17:20:00' 등등으로 24 시간 기반의 값으로 입력해보세요. '오전' 이나 '오후' 라고 입력하지 마시구요. 그러면 일단 오류는 해결이 될 것입니다.

온라인 도움말에서 '국가별 Transact-SQL 문 작성' 라는 문서를 찾아보시기 바랍니다. 그럼 거기에 다음과 같이 정의되어 있습니다.
ADO, OLE DB 및 ODBC 응용 프로그램은 다음과 같은 ODBC용 타임스탬프, 
날짜 및 시간 이스케이프 절을 사용해야 합니다.
{ ts 'yyyy-mm-dd hh:mm:ss[.fff] '} 예제: { ts '1998-09-24 10:02:20' }
{ d 'yyyy-mm-dd'} 예제: { d '1998-09-24' }
{ t 'hh:mm:ss'} 예제: { t '10:02:20'}
위의 형식은 운영체제의 언어나 국가별 설정에 관계없이 날짜형을 다루기 위한 형식입니다. 즉 한 마디로 날짜와 시간을 다룰 때는 '1998-09-24 10:02:20' 형식으로, 날짜만 다룰 때는 '1998-09-24' 형식으로 그리고 시간만을 다룰 때는 '10:02:20' 형식으로 하라는 얘기죠.


왜 이렇게 입력해야 하는지 생각해 보겠습니다. 음... 좋은 사례가 뭐가 있을까요... 음... 예를 들어 Convert() 의 도움말을 보시면 SELECT 조회시 날짜형 (DateTime) 하나 가지고서 상당히 많은 형태로 변형이 가능하다는 것을 보실 수 있습니다. 국가별 설정에 따라서도 굉장히 많은 변형이 있을수 있지요.

그러나 실제로 날짜형에는 내부적으로 이러한 형식으로 값이 저장되어 있는 것은 아닙니다. SQL 서버의 입장에서는 모든 상황과 국가별 설정에 관계없이 적적히 대처할 수 있는 어떤 통일된 형식을 사용할 필요가 있는 거지요. 예를 들면 다음과 같이 조회를 해보면 금새 알 수 있습니다.
SELECT CAST(DateColumn AS INT) FROM TestTable
물론 여기에서 TestTable 은 날짜형이 들어있는 테이블이고 DateColumn 는 날짜형 컬럼이구요. 이 쿼리는 CAST() 를 써서 날짜형을 정수형으로 바꿔서 출력하는 거죠. 그럼 '2003-06-24 오후 7:20:00' 가 '37795' 로 리턴이 되는 식입니다.

여기에서 중요한 사실은 날짜형이라고 해서 정말로 '2003-06-24 오후 7:20:00' 와 같은 형식으로 데이타가 들어 있지는 않다는 점입니다. 저도 정확하게는 모르지만 위에서와 같이 아마 어떤 규칙을 가지고 있는 숫자형으로 다루어지는 것으로 알고 있습니다.

그리고 SELECT 시에 운영체제의 언어와 국가별 설정에 따라 적절히 변형해서 보여주는 거구요. 따라서 SELECT 조회시 '2003-06-24 오전 2:20:00' 와 같은 형식으로 리턴이 됐다고 해서 그와 같은 형식으로 입력을 하면 오류가 발생합니다. '2003-06-24 오전 2:20:00', 이 값은 이미 한 번 변형이 일어난 값이기 때문이죠. 따라서 입력시에는 항상 위에서 말씀드린 형식으로 값을 입력하는 것이 좋습니다. ^_^


그리고 Convert() 는 SELECT 조회시에 날짜형에 대해서만 주로 사용합니다. 입력할 때는 잘 사용하지 않구요. 일반적으로 다른 형들간의 변환에는 Cast() 를 주로쓰죠. 예를 들면 다음과 같은 식입니다.
CAST('123' AS INT)            -- 문자 123 을 숫자 123 으로
CAST(123 AS CHAR(3))      -- 숫자 123 을 문자 123 으로
감사합니다.
IP 주소: 165.21.154.14
전체 2,095 건의 게시물, 84 페이지로 구성된 ASP, ASP.NET, IIS & Script 게시판의 83 페이지입니다.
게시물
55

Dext Upload 컴포넌트 버젼이 몇인지요? [2]

GraY

2003-08-21 5,564
54

re: Dext Upload 컴포넌트 버젼이 몇인지요?

송원석

2003-08-21 3,755
53

오류에 관한 몇가지 추가해서 씁니다.^^ [2]

김은성

2003-08-19 1,376
52

re: 오류에 관한 몇가지 추가해서 씁니다.^^ [5]

송원석

2003-08-19 3,666
51

오류의 몇가지

김은성

2003-08-18 3,194
50

re: 오류의 몇가지

송원석

2003-08-18 3,195
49

정말대단하군요..근데 궁금한게...

성군이

2003-07-31 1,276
48

re: 정말대단하군요..근데 궁금한게...

송원석

2003-07-31 3,414
47

진짜 대단하시네요... & ps..

큰머리

2003-07-30 3,561
46

re: 진짜 대단하시네요... & ps.. [2]

송원석

2003-07-30 3,224
45

폴더명 삭제시 오류에 대해... [1]

제이딘

2003-07-30 3,811
44

우훗~ 이런이런... 선수를 치다니.. ㅋㅋ [1]

황윤상

2003-07-26 3,648
43

[질문] 다음버젼으 FileFube의 추가기능은?

황윤상

2003-07-26 3,724
42

re: [질문] 다음버젼으 FileFube의 추가기능은?

송원석

2003-07-26 3,627
41

오류중에여

궁금이

2003-07-17 1,524
40

re: 오류중에여

송원석

2003-07-17 3,799
39

업로드도 가능하게 해주세요.

궁금이

2003-07-17 1,245
38

re: 업로드도 가능하게 해주세요.

송원석

2003-07-17 3,416
37

[공지] FileCube 버전 0.0.4 를 다운로드 받으실 수 있습니다.

송원석

2003-07-13 3,721
36

filecube 문의

가가멜

2003-07-02 3,504
35

re: filecube 문의

송원석

2003-07-02 3,479
34

re: 폴더명 순으로 보여주세요...

착한아빠

2003-07-09 3,447
33

re: 폴더명 순으로 보여주세요... [1]

송원석

2003-07-09 3,568
32

또 질물을... ^^;

ㅜ.ㅜ

2003-06-24 4,093

re: 또 질물을... ^^;

송원석

2003-06-24 4,004