게시판 본문 ASP, ASP.NET, IIS & Script - Read Only
re: 또 질물을... ^^; |
---|
작성자: 송원석
작성일시: 2003-06-24 23:28,
조회수: 4,204
|
송원석 입니다. ^_^
저도 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 | 2003-08-21 | 6,008 | ||
54 | 2003-08-21 | 3,971 | ||
53 |
김은성 |
2003-08-19 | 1,376 | |
52 | 2003-08-19 | 3,915 | ||
51 | 2003-08-18 | 3,413 | ||
50 | 2003-08-18 | 3,402 | ||
49 |
성군이 |
2003-07-31 | 1,276 | |
48 | 2003-07-31 | 3,610 | ||
47 | 2003-07-30 | 3,766 | ||
46 | 2003-07-30 | 3,436 | ||
45 | 2003-07-30 | 4,015 | ||
44 | 2003-07-26 | 3,863 | ||
43 | 2003-07-26 | 3,917 | ||
42 | 2003-07-26 | 3,838 | ||
41 |
궁금이 |
2003-07-17 | 1,524 | |
40 | 2003-07-17 | 4,003 | ||
39 |
궁금이 |
2003-07-17 | 1,245 | |
38 | 2003-07-17 | 3,618 | ||
37 | 2003-07-13 | 3,952 | ||
36 | 2003-07-02 | 3,723 | ||
35 | 2003-07-02 | 3,690 | ||
34 | 2003-07-09 | 3,645 | ||
33 | 2003-07-09 | 3,768 | ||
32 | 2003-06-24 | 4,319 | ||
2003-06-24 | 4,204 |