Date d'expiration = '2017-10-16' et ExpiryTime = '12: 00pm 'dans le tableau et dans notre pays La date d'expiration est' 2017-10-16 'et l'heure actuelle est' 2017-10-16 11: 05: 33.503 'Pourquoi mon code exécute-t-il un bloc IF même si la comparaison des dates échoue?
mais encore, mon code exécute la condition IF qu'il ne devrait pas. Pourquoi ?
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
Pourquoi vous utilisez le code de conversion '106' et aussi pourquoi faites tant de conversions entre varchar et la date? –
Je suis confus au sujet de '12:00 pm' ... Je ne peux pas dire si c'est 2017-10-16 matin (0:00) ou 2017-10-17 0:00 ... dans le premier cas, votre 'IF' _is_' vrai'. –
C'est pourquoi vous n'utilisez pas de chaînes pour manipuler les dates! – Alex