다음을 통해 공유


ISDATE(Transact-SQL)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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)