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 |
+---------+
示例
ISDATE() 函数在参数为 NULL 时将返回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语言环境中
我们将使用相同的值,但不同的是语言设置为us_english
SET LANGUAGE us_english;
SELECT ISDATE('16/02/2023') AS 'in us_english';
输出
当上述查询被执行时,它将产生如下所示的输出-
+---------------+
| in us_english |
+---------------+
| 0 |
+---------------+
以日/月/年格式
ISDATE()函数取决于用户选择的格式设置类型。
考虑一个简单的示例,我们将观察如何通过格式设置使相同的值具有不同的返回值。
执行下面的查询,我们将格式设置为 日/月/年 。
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 |
+-------------------+