Sql server 如何检查输入日期是否为特定格式-SQL SERVER
我想检查输入日期是否为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 如何检查输入日期是否为特定格式-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条件中插入一个可以防止无效日期转换的检查 我想创建一
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上运行。