ISDATE (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
如果 expression 為有效的 datetime 值,則傳回 1;否則傳回 0。
ISDATE 會在 expression 為 datetime2 值時傳回 0。
如需所有 Transact-SQL 日期和時間資料類型與函式的概觀,請參閱日期和時間資料類型與函式 (Transact-SQL)。 請注意,datetime 資料範圍為 1753-01-01 到 9999-12-31,而 date 資料範圍是 0001-01-01 到 9999-12-31。
語法
ISDATE ( expression )
引數
expression
為字元字串,或可以轉換為字元字串的運算式。 此運算式的長度必須少於 4,000 個字元。 日期和時間資料類型 (但不包括 datetime 和 smalldatetime) 不允許做為 ISDATE 的引數。
傳回類型
int
備註
只有在搭配 CONVERT 函式使用,且已指定 CONVERT 樣式參數,並且樣式不等於 0、100、9 或 109 時,ISDATE 才具確定性。
ISDATE 的傳回值會根據 SET DATEFORMAT、SET LANGUAGE 和設定預設語言伺服器設定選項的設定而不同。
ISDATE 運算式格式
如需 ISDATE 將傳回 1 之有效格式的範例,請參閱 datetime 和 smalldatetime 主題中的<datetime 支援的字串常值格式>一節。 如需其他範例,請參閱 CAST 和 CONVERT 中<引數>一節內的輸入/輸出資料行。
下表將摘要列出無效而且會傳回 0 或錯誤的輸入運算式格式。
ISDATE 運算式 | ISDATE 傳回值 |
---|---|
NULL | 0 |
在資料類型的任何資料類型類別中所列的資料類型值,但字元字串、Unicode 字元字串或日期和時間除外。 | 0 |
text、ntext 或 image 資料類型的值。 | 0 |
秒數有效位數超過 3 的任何值 (.0000 到 .0000000...n)。 若 expression 為 datetime2 值,則 ISDATE 會傳回 0;若 expression 為有效的 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 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;
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
C. 使用 ISDATE 測試有效的 datetime 運算式
下列範例示範如何使用 ISDATE
來測試字元字串是否為有效的 datetime。
IF ISDATE('2009-05-12 10:19:41.177') = 1
SELECT 'VALID';
ELSE
SELECT 'INVALID';