2
表中和我们国家的到期日期='2017-10-16'和到期时间= '12:00pm'得分日期为'2017-10-16',currentdatetime为'2017-10-16 11:05:33,503'即使日期比较失败,为什么我的代码仍然执行IF块?
但仍然,我的代码执行它不应该的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和日期之间那么多的转换? –
我对“下午12:00”感到困惑......我不知道这是2017年10月16日上午(0:00)还是2017年10月17日0:00 ...在第一种情况下,您的'IF' _is_'true'。 –
这就是为什么你不使用字符串操纵日期! – Alex