我正在比较日期和时间,但它有时无法正常工作
代码:
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与当前日期时间比较,即Getadate(),如果到期日期和时间小于当前日期时间,则不应显示其他显示。
答案 0 :(得分:1)
你可以试试这个:
convert(datetime,convert(varchar,w.ExpiryDate,121) + ' ' + w.ExpiryTime, 121 )
答案 1 :(得分:1)
不是转换为字符并转换回来,只需将expirytime
转换为time
数据类型,然后将该时间添加到转换为expirydate
的{{1}}像这样:
datetime
或与select *
, expirydatetime = dateadd(millisecond
,datediff(millisecond,0,convert(time(7),w.expirytime))
,convert(datetime,w.expirydate)
)
from works w
where dateadd(millisecond
,datediff(millisecond,0,convert(time(7),w.expirytime))
,convert(datetime,w.expirydate)
) < getdate()
datetime2
rextester演示:http://rextester.com/LDY81881