[MSSQL] 날짜 형식 체크 방법 (ISDATE 함수)

SQL Server에서 문자열이 날짜 형식인지 체크할 때는 ISDATE 함수를 사용하면 된다. 날짜인 경우 '1'을 반환하고, 날짜가 아닌 경우 '0'을 반환한다. ISDATE 함수는 CASE 연산자나 WHERE 절에서 ISDATE(칼럼) = 1로 사용하면 된다. 허용되는 날짜 형식이 여러 가지 있기 때문에 아래의 예제를 참고하면 된다.

 

MSSQL ISDATE 함수 사용법

목차
  1. 날짜 형식 체크 방법
  2. 정확한 날짜 형식
  3. 부정확한 날짜 형식
  4. ISDATE 함수 활용
  5. 문자열을 날짜로 변환 시 TRY 함수 사용

 

날짜 형식 체크 방법

SELECT ISDATE('2022-12-13')
     , ISDATE('2022-12-32')
     , ISDATE('2022년12월13일')

 

 

ISDATE 함수는 문자열이 날짜 형식인 경우 '1'을 반환하고, 날짜 형식이 아닐 경우 '0'을 반환한다.

 

위의 예제는 첫 번째 2022-12-13은 정확한 날짜 형식이고, 2022-12-32는 형식은 맞지만 없는 날짜이기 때문에 '0'을 반환한다. 그리고 날짜와 허용되는 구분자 외에 문자(년, 월, 일 등)가 있으면 '0'을 반환한다.

 

정확한 날짜 형식

SELECT ISDATE('20221213')
     , ISDATE('2022-12-13')
     , ISDATE('2022/12/13')
     , ISDATE('2022.12.13')
     , ISDATE('221213')
     , ISDATE('2022-1-1')
     , ISDATE('12/13/2022')
     , ISDATE('2022-12-13 07:05:00')

 

 

위의 예제는 ISDATE 함수에서 날짜로 인식하는 날짜 형식이다. 날짜(0)

 

부정확한 날짜 형식

SELECT ISDATE('2022-02-31')
     , ISDATE('2022_12_13')
     , ISDATE('2022년12월13일')
     , ISDATE('2022-12-1307:05:00')
     , ISDATE(NULL)

 

 

위의 예제는 ISDATE 함수에서 허용하지 않는 날짜 형식이다. 날짜(X)

 

ISDATE 함수 활용

WITH temp AS (
    SELECT '2022-12-13' AS dte UNION ALL
    SELECT '2022-12-32' AS dte UNION ALL
    SELECT '2022년12월13일' AS dte
)

SELECT dte
     , CASE WHEN ISDATE(dte) = 1 THEN 'O' ELSE 'X' END AS [isdate]
  FROM temp

 

 

CASE 표현식에서 문자열이 날짜인지 판단할 때 조건으로 사용할 수 있다.

 

WITH temp AS (
    SELECT '2022-12-13' AS dte UNION ALL
    SELECT '2022-12-32' AS dte UNION ALL
    SELECT '2022년12월13일' AS dte
)

SELECT dte
     , CAST(dte AS date) AS [isdate]
  FROM temp
 WHERE ISDATE(dte) = 1

 

 

WHERE 절에서 문자열이 날짜인 경우만 조건을 부여하여 조회할 수 있다.

 

문자열을 날짜로 변환 시 TRY 함수 사용

 

CAST 및 CONVERT 함수로 문자열을 날짜로 변환할 때 형식이 맞지 않으면 오류가 발생한다. 이럴 때는 CASE 표현식과 ISDATE 함수를 사용하여 예외 처리를 할 수 있지만, SQL Server 2012부터 TRY 함수가 추가되어서 예외처리를 하지 않아도 오류를 예방할 수 있다.

 

SELECT TRY_CAST('2022-12-13' AS date)
     , TRY_CAST('2022년12월13일' AS date)
     , TRY_CONVERT(date, '2022-12-13')
     , TRY_CONVERT(date, '2022년12월13일')

 

 

TRY 함수를 사용하면 형식이 일치할 경우 형 변환이 되고, 부적합할 경우 NULL을 반환한다.

 

 

댓글

Designed by JB FACTORY