ISDATE(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

expression이 유효한 datetime 값인 경우 1을 반환하고, 그렇지 않으면 0을 반환합니다.

expressiondatetime2 값인 경우 ISDATE에서 0을 반환합니다.

모든 Transact-SQL 날짜/시간 데이터 형식 및 함수에 대한 개요는 날짜/시간 데이터 형식 및 함수(Transact-SQL)를 참조하세요. datetime 데이터의 범위는 1753-01-01부터 9999-12-31까지이지만 date 데이터의 범위는 0001-01-01부터 9999-12-31까지입니다.

Transact-SQL 구문 표기 규칙

Syntax

ISDATE ( expression )

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

expression
문자열이거나 문자열로 변환할 수 있는 expression입니다. 이 식은 4,000자 미만이어야 합니다. datetime 및 smalldatetime을 제외하고 날짜 및 시간 데이터 형식은 ISDATE에 대한 인수로 허용되지 않습니다.

반환 형식

int

설명

ISDATE는 CONVERT 함수와 함께 사용하고 CONVERT 스타일 매개 변수가 지정되고 스타일이 0, 100, 9 또는 109가 아닌 경우에만 결정적입니다.

ISDATE의 반환 값은 SET DATEFORMAT, SET LANGUAGEConfigure the default language Server Configuration Option의 설정에 따라 달라집니다.

ISDATE 식 형식

ISDATE에서 1을 반환하는 유효한 형식의 예는 datetimesmalldatetime 항목의 "datetime에 대해 지원되는 문자열 리터럴 형식" 섹션을 참조하세요. 다른 예를 보려면 CAST 및 CONVERT의 "인수" 섹션에서 입/출력 열을 참조하세요.

다음 표에서는 0 또는 오류를 반환하는 잘못된 입력 식 형식을 요약하여 보여 줍니다.

ISDATE 식 ISDATE 반환 값
NULL 0
데이터 형식에서 문자열, 유니코드 문자열, 또는 날짜 및 시간을 제외한 모든 데이터 형식 범주에 속한 데이터 형식의 값 0
text, ntext 또는 image 데이터 형식의 값 0
초의 소수 자릿수가 세 자리를 초과하는 모든 값(.0000부터 .0000000...n까지) ISDATE는 datetime2 값일 경우 0을 반환하지만 이 유효한 datetime 값일 경우에는 1을 반환합니다. 0
1995-10-1a와 같이 유효한 날짜에 잘못된 값이 섞여 있는 경우 0

A. ISDATE를 사용하여 올바른 datetime 식 테스트

다음 예에서는 ISDATE를 사용하여 문자열이 올바른 datetime인지 테스트하는 방법을 보여 줍니다.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    PRINT 'VALID'  
ELSE  
    PRINT 'INVALID';  

B. SET DATEFORMAT 및 SET LANGUAGE 설정이 반환 값에 미치는 영향

다음 문에서는 SET DATEFORMATSET LANGUAGE 설정의 결과로 반환되는 값을 보여 줍니다.

/* Use these sessions settings. */  
SET LANGUAGE us_english;  
SET DATEFORMAT mdy;  
/* Expression in mdy dateformat */  
SELECT ISDATE('04/15/2008'); --Returns 1.  
/* Expression in mdy dateformat */  
SELECT ISDATE('04-15-2008'); --Returns 1.   
/* Expression in mdy dateformat */  
SELECT ISDATE('04.15.2008'); --Returns 1.   
/* Expression in myd  dateformat */  
SELECT ISDATE('04/2008/15'); --Returns 1.  
  
SET DATEFORMAT mdy;  
SELECT ISDATE('15/04/2008'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('15/2008/04'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('2008/15/04'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
SET DATEFORMAT dmy;  
SELECT ISDATE('15/04/2008'); --Returns 1.  
SET DATEFORMAT dym;  
SELECT ISDATE('15/2008/04'); --Returns 1.  
SET DATEFORMAT ydm;  
SELECT ISDATE('2008/15/04'); --Returns 1.  
SET DATEFORMAT ymd;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
SET LANGUAGE English;  
SELECT ISDATE('15/04/2008'); --Returns 0.  
SET LANGUAGE Hungarian;  
SELECT ISDATE('15/2008/04'); --Returns 0.  
SET LANGUAGE Swedish;  
SELECT ISDATE('2008/15/04'); --Returns 0.  
SET LANGUAGE Italian;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
/* Return to these sessions settings. */  
SET LANGUAGE us_english;  
SET DATEFORMAT mdy;  

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

C. ISDATE를 사용하여 올바른 datetime 식 테스트

다음 예에서는 ISDATE를 사용하여 문자열이 올바른 datetime인지 테스트하는 방법을 보여 줍니다.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    SELECT 'VALID';  
ELSE  
    SELECT 'INVALID';  

참고 항목

CAST 및 CONVERT(Transact-SQL)