SQL - ISDATE() 函式



SQL 的 ISDATE() 函式允許您確定某個值是否為有效日期。如果您將此函式與 convert 函式一起使用,則此函式將始終返回相同的結果。ISDATE() 函式返回整數 1,表示輸入表示式為有效日期;如果它們返回整數 0,則表示輸入表示式不是日期。

如果您提供 datetime2 值,則 ISDATE() 函式將返回 0,通知您它不是日期。

語法

以下是 SQL ISDATE() 函式的語法:

ISDATE(expression)

引數

此函式僅接受一個引數,如下所述:

  • expression − 要檢查的表示式。

注意 − 如果給定的日期僅包含時間部分,則 month() 函式返回 1。

示例

在以下查詢中,我們正在檢查表示式是否有效:

SELECT ISDATE('2023-02-16');

輸出

當我們執行上述查詢時,輸出如下所示:

+---------+
| no name |
+---------+
| 1       |
+---------+

示例

在這裡,我們嘗試使用以下查詢查詢給定表示式是否有效:

SELECT ISDATE('Tutorialspoint');

輸出

執行上述查詢後,輸出將顯示如下:

+---------+
| no name |
+---------+
| 0       |
+---------+

示例

當引數為 NULL 時,ISDATE() 函式將返回 0,表示 NULL 值不是有效日期。

在下面的示例中,我們將使用 null 來檢查表示式是否有效,方法是執行以下查詢:

SELECT ISDATE(NULL) as Result;

輸出

上述查詢的輸出如下所示:

+--------+
| Result |
+--------+
| 0      |
+--------+

示例

檢視以下示例,其中我們在表示式中使用 月份的文字名稱 來檢查表示式是否有效,方法是使用以下查詢:

SELECT ISDATE('November 27 2000') as Result;

輸出

如果我們執行上述查詢,則結果如下所示:

+--------+
| Result |
+--------+
| 1      |
+--------+

示例

考慮以下示例,其中我們使用 時間 作為輸入引數並檢查表示式是否有效,方法是執行以下查詢。

SELECT ISDATE('2:36:00') as Result;

輸出

執行上述查詢後,它將生成如下所示的輸出:

+--------+
| Result |
+--------+
| 1      |
+--------+

示例

讓我們看一下以下示例,其中我們使用帶變數的 ISDATE() 函式並檢查表示式是否有效,方法是執行以下查詢:

DECLARE @expression VARCHAR(23);
SET @expression= '2023/02/16';
SELECT ISDATE(@expression) AS Result;

輸出

執行上述查詢後,它將生成如下所示的輸出:

+--------+
| Result |
+--------+
| 1      |
+--------+

示例

考慮以下示例,其中我們將列印有效日期或無效日期,具體取決於返回值是 1 還是 0,方法是使用以下查詢:

要使用返回值,您可以使用條件表示式(而不僅僅是顯示 0 或 1)。

IF ISDATE('2023-02-16')=1  
   PRINT 'Valid Date'  
ELSE  
   PRINT 'Invalid Date';

輸出

執行上述查詢後,它將生成如下所示的輸出:

Valid Date

示例

ISDATE() 的返回值取決於使用者將要選擇的語言型別和日期格式設定。

讓我們考慮一個簡單的示例,其中我們將觀察更改語言設定如何導致相同的值具有多個結果。

在英國英語中

執行以下查詢,其中語言設定為英國英語。

SET LANGUAGE British;
SELECT ISDATE('16/02/2023') AS 'in British';

輸出

當我們執行上述查詢時,輸出如下所示:

+------------+
| in British |
+------------+
| 1          |
+------------+

在美國英語中

我們將使用相同的值,但不同之處在於語言設定為 us_english

SET LANGUAGE us_english;
SELECT ISDATE('16/02/2023') AS 'in us_english'; 

輸出

執行上述查詢後,它將生成如下所示的輸出:

+---------------+
| in us_english |
+---------------+
| 0             |
+---------------+

在 dmy 格式中

ISDATE() 函式取決於使用者選擇的格式設定型別。

考慮一個簡單的示例,其中我們將觀察格式設定如何使相同的值具有不同的返回值。

執行以下查詢,其中我們將格式設定設定為 dmy

SET DATEFORMAT dmy;
SELECT ISDATE('16/02/2023') AS 'DATEFORMAT is dmy';

輸出

執行上述查詢,生成如下所示的輸出:

+-------------------+
| DATEFORMAT is dmy |
+-------------------+
| 1                 |
+-------------------+

在 mdy 格式中

考慮相同的值並透過將格式設定更改為 mdy 來執行以下查詢。

SET DATEFORMAT mdy;
SELECT ISDATE('16/02/2023') AS 'DATEFORMAT is mdy'; 

輸出

當我們執行上述查詢時,輸出如下所示

+-------------------+
| DATEFORMAT is mdy |
+-------------------+
| 0                 |
+-------------------+
sql-date-functions.htm
廣告