http://www.sqler.com/467497 이 글에 있어서 ㅋ. 예전에 알던 자료와 조금 더 테스트해서 삽질한 것을 좀 정리해 봤습니다.

 

ISDATE 함수는 ISDATE(표현) 이런 식으로 사용하고, 날짜형식인 경우 1 날짜형식이 아닌 경우 0을 반환합니다.

 

 

SELECT

       ISDATE('20120101') AS '1',

       ISDATE('2012/01/01') AS '2',

       ISDATE('2012-01-01') AS '3',

       ISDATE('12-01-01') AS '4',

       ISDATE('2012-04-31') AS '5',

       ISDATE(NULL) AS '6',

       ISDATE('201l-12-31') AS '7',

       ISDATE('123') AS '8',

       ISDATE('2012-01-01 15:55:59.455') AS '9',

       ISDATE('2012-01-01 15:55:59.4551') AS '10',

       ISDATE('1752-12-31') AS '11',

       ISDATE('1753-01-01') AS '12',

       ISDATE('2999-01-01') AS '13',

       ISDATE('9999-12-31') AS '14',

       ISDATE('01/2012/12')AS '15',

       CONVERT(DATETIME,'01/2012/12') AS 'DATETIME-01/2012/12'

ISDATE.png

 

1 : ISDATE('20120101') AS '1' : 기본 날짜 형태 중 하나입니다. "1"을 반환합니다.
2 : ISDATE('2012/01/01') AS '2' : 기본 날짜 형태 중 하나입니다. "1"을 반환합니다.
3 : ISDATE('2012-01-01') AS '3' : 기본 날짜 형태 중 하나입니다. "1"을 반환합니다.
4 : ISDATE('12-01-01') AS '4' : 기본 짧은날짜 형태 중 하나입니다. "1"을 반환합니다.
5 : ISDATE('2012-04-31') AS '5' : ISDATE 함수는 이럴 때 빛을 발하죠... 4월 31일은 없습니다.  "0"을 반환합니다.
6 : ISDATE(NULL) AS '6' : NULL 값일 경우 "0"을 반환합니다.
7 : ISDATE('201l-12-31') AS '7' : '어, 이상한데? 1이 되어야 하는 거 아닌가?' 하지만 잘 보면 2011이 아니라 201L 입니다.  "0"을 반환합니다.

8. ISDATE('123') AS '8' : 날짜형태라고 볼 수 없죠. 당연히 "0"을 반환합니다.
9 : ISDATE('2012-01-01 15:55:59.455') AS '9' : ISDATE 함수는 초의 소수점 세 자리까지 받아들일 수 있습니다. "1"을 반환합니다.
10 : ISDATE('2012-01-01 15:55:59.4551') AS '10' : 9번 설명과 같습니다. 소수점 자리수 초과로 "0"을 반환합니다.
11 : ISDATE('1752-12-31') AS '11' : '어, 이것도 날짜 맞잖아.' 네. 맞습니다. 하지만 "0"을 반환합니다.

  요건 이 글 참조요~

   http://www.sqler.com/271895#comment_271983
12 : ISDATE('1753-01-01') AS '12' : 윗 글을 읽으셨나요? 이제 왜 위의 날짜와 하루 차이인데 "1"을 반환하는 지 아실 겁니다. ^^.
13 : ISDATE('2999-01-01') AS '13' : 아직 오지 않은 2999년. 다들 그 때까지 살아 계실 거죠? 정상적인 일자로 "1"을 반환합니다.
14 : ISDATE('9999-12-31') AS '14' : 이제 조금 더 가 보겠습니다.. 9999년 12월 31일. 네... 오래 사세요. "1"을 반환합니다.
15 : ISDATE('01/2012/12')AS '15' : 년-월-일 같은 형태와 달리 월-년-일로 처리해 보았습니다. "1"로 반환하네요. 날짜로 인식합니다.
16 : CONVERT(DATETIME,'01/2012/12') AS 'DATETIME-01/2012/12' : 15번에 대해 어떻게 인식하는지 직접 보여 드립니다.

   

참고로 이 결과는 국가나 언어설정에 따라 조금 다른 차이가 있을 수 있습니다.

다만, 그 부분에 대해서는 다루지 않았으니 주의해 주세요...

 

감사합니다.





profile

윤선식 / SQL프런티어 3기 / http://www.sqler.com , http://windtrap.tistory.com

즐거운 인생을 살고 싶어요. ^^.

OnDemand SQL Server  Consultant

UPDATE dbo.MyWarehouse

SET MyDream = 'SQL Server Expert' 

WHERE 닉네임 = '쓸만한게없네'

GO