Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何检查输入日期是否为特定格式-SQL SERVER_Sql Server_Date_Datetime - Fatal编程技术网

Sql server 如何检查输入日期是否为特定格式-SQL SERVER

Sql server 如何检查输入日期是否为特定格式-SQL SERVER,sql-server,date,datetime,Sql Server,Date,Datetime,我想检查输入日期是否为Sql Server中的特定格式。我无法使用函数ISDATE,因为dateformat MDY不支持103(dd/mm/yyyy)、104(dd.mm.yyyy)、105(dd-mm-yyyy)等格式 如果我尝试转换,例如,“16/09/2015”这样 转换(日期时间,'16/09/2015',103) 我得到了演员阵容,但很明显,如果我试图转换一些东西,比如《16/0c/2015》,我会得到一个例外 所以我想在WHERE条件中插入一个可以防止无效日期转换的检查 我想创建一

我想检查输入日期是否为Sql Server中的特定格式。我无法使用函数ISDATE,因为dateformat MDY不支持103(dd/mm/yyyy)、104(dd.mm.yyyy)、105(dd-mm-yyyy)等格式

如果我尝试转换,例如,“16/09/2015”这样 转换(日期时间,'16/09/2015',103) 我得到了演员阵容,但很明显,如果我试图转换一些东西,比如《16/0c/2015》,我会得到一个例外

所以我想在WHERE条件中插入一个可以防止无效日期转换的检查

我想创建一个可以执行此作业的特定函数。当出现以下情况时,我尝试将其插入函数盒:

 case 
        when @format in (103,104,105) then set language british 
 end
 isdate(@string)
还是像这样

 declare @result varchar(30)
 begin try
        SELECT @result = CONVERT(datetime,@string,@format)
        SET @ret = 1
        RETURN
    end try
    begin catch
        SET @ret = 0
        RETURN
    end catch;
但在函数中,我不能插入try-catch或set-language语句

你能帮我吗

谢谢


Fabio

您没有说您使用的是哪个版本的Sql Server。从2012年开始,您可以使用函数,该函数接受与CONVERT相同的日期时间样式。然后,您可以尝试将输入转换为多种格式,而不会出现任何错误-如果转换失败,您只会得到NULL


在2012年之前的版本中,您可以创建自定义并在.NET中执行。这需要做一些工作,但仍然比使用mssql内置函数验证日期要好,因为不仅要确定格式,还要验证日期(月内30天或31天、闰年等)。在.NET中,它几乎是一行程序。

谢谢亚当。我的代码必须在SQLServer2005和SQLServer2008上运行。