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
广告