【发布时间】:2017-11-11 10:35:00
【问题描述】:
我正在比较日期和时间,但有时无法正常工作
代码:
Select nit_no, workno, convert(datetime,convert(varchar,w.ExpiryDate,106) + ' ' + w.ExpiryTime), getdate()
from works w
where NIT_No= 3594 and WorkNo=1
and convert(datetime,convert(varchar,w.ExpiryDate,106) + ' ' + w.ExpiryTime) <= getdate()
价值观:
convert(datetime,convert(varchar,w.ExpiryDate,106) + ' ' + w.ExpiryTime)= 2017-06-08 16:50:54.000
getdate()= 2017-06-08 17:50:54.000
ExpiryDate 属于 DATE 类型,ExpiryTime 属于 VARCHAR
类型不能正常工作,getdate()小于另一个表达式,stills返回数据。
更新: 我想要做的是将 ExpiryDate 和 ExpiryTime 与当前 Datetime 即 Getadate() 进行比较,如果到期日期和时间小于当前日期时间,则不应显示其他显示。
【问题讨论】:
-
您不必显式转换日期以将它们与字符串进行比较。
-
解释你想要做什么。样本数据和期望的结果很有帮助。
-
@GordonLinoff 没什么特别的。正是我发布的内容是我正在尝试做的,将 ExpiryDate 和时间与当前进行比较,如果它小于当前日期时间,则不应显示其他显示
-
价值不少。 IT"S MORE。17:50 是在 16:50 之后。这就是它返回数据的原因。
-
@Covert 2017-06-08 17:50:54.000 >= 2017-06-08 16:50:54.000 这就是为什么这是真的。我不知道你不懂什么
标签: sql sql-server tsql stored-procedures sql-server-2014