我只想验证来自用户的给定输入
Declare @UserInput NVARCHAR(20)
set @UserInput = '26/07/2013'
select ISDATE(@UserInput)
这将返回false,因为日期是澳大利亚格式,即使日期有效
我可以将最后一行更改为以下
select isdate(CONVERT(datetime, @UserInput, 103))
它有效。但是如果@Userinput是垃圾(即: - 'hello'),那么最后一个语句就会失败。我怎么能有一些东西,无论用户输入什么,它都会将其验证为澳大利亚日期(年/月/日)?
由于
答案 0 :(得分:7)
使用 SET DATEFORMAT 指定您希望输入日期的格式:
SET DATEFORMAT DMY;
Declare @UserInput NVARCHAR(20)
set @UserInput = '26/07/2013'
select ISDATE(@UserInput)
我倾向于在输入到达SQL-Server之前执行此类验证,并确保任何日期变量都是日期。
答案 1 :(得分:3)
假设您使用的是SQL Server 2012及更高版本,则可以改为使用TRY_CONVERT:
select isdate(TRY_CONVERT(datetime, @UserInput, 103))