ISDATE (Transact-SQL)
如果 expression 是有效的 date、time 或 datetime 值,則傳回 1,否則傳回 0。
如需所有 Transact-SQL 日期和時間資料類型與函數的概觀,請參閱<日期和時間資料類型與函數 (Transact-SQL)>。如需日期和時間資料類型與函數常用的資訊和範例,請參閱<使用日期和時間資料>。
語法
ISDATE ( expression )
傳回類型
int
備註
只有在搭配 CONVERT 函數使用、已指定 CONVERT 樣式參數,而且樣式不等於 0、100、9 或 109 時,ISDATE 才具有決定性。
ISDATE 的傳回值會根據 SET DATEFORMAT、SET LANGUAGE 和預設語言選項的設定而不同。如需範例,請參閱<範例 C>。
ISDATE 運算式格式
如需 ISDATE 將傳回 1 之有效格式的範例,請參閱<datetime>和<smalldatetime>主題中的「支援 datetime 的字串常值格式」一節。如需其他範例,請參閱<CAST 和 CONVERT>中「引數」一節的輸入/輸出資料行。
下表將摘要列出無效而且會傳回 0 或錯誤的輸入運算式格式。
ISDATE 運算式 |
ISDATE 傳回值 |
---|---|
NULL |
0 |
在<資料類型>的任何資料類型類別目錄中所列的資料類型值,但字元字串、Unicode 字元字串或日期和時間除外。 |
0 |
text、ntext 或 image 資料類型的值。 |
0 |
秒數有效位數超過 3 的任何值 (.0000 到 .0000000...n)。 |
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 DATEFORMAT 和 SET 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;