【发布时间】:2017-10-16 06:07:20
【问题描述】:
Expiry Date = '2017-10-16' and ExpiryTime='12:00pm' in table and in our country Getdate is '2017-10-16' and currentdatetime is '2017-10-16 11:05:33.503 '
但是,我的代码仍然执行它不应该执行的 IF 条件。为什么?
Declare @ExpiryDate date
Declare @ExpiryTime varchar(10)
Set @ExpiryDate= (Select convert(varchar(11), ExpiryDate, 106) from Works where NIT_No= @NITNo and WorkNo= @WorkNo)
Set @ExpiryTime= (Select CAST(ExpiryTime as TIME(0)) from Works where NIT_No= @NITNo and WorkNo= @WorkNo)
IF(CONVERT(DATETIME,CONVERT(VARCHAR,@ExpiryDate,106)+ ' ' + @ExpiryTime) <= CONVERT(datetime, GETDATE()))
Begin
RAISERROR('Sorry, Expiry date and time has passed', 16, 10);
return;
End
【问题讨论】:
-
您为什么使用转换代码
106以及为什么在 varchar 和 date 之间进行如此多的转换? -
我对
12:00pm感到困惑...我不知道那是 2017-10-16 早上 (0:00) 还是 2017-10-17 0:00...in第一种情况,你的IF是true. -
这就是为什么你不使用字符串来操作日期!
标签: sql sql-server sql-server-2008 tsql stored-procedures