[英]How to compare datetime in SQL Server?
如果日期時間介於2018/01/30 04:59:59.000
和2018/01/31 04:59:59.000
之間,我必須顯示日期2018/01/30
我有一個名為DataEntry的表。 我想按我的標准按日期移動這些記錄。
此DataEntry表的TransferTime數據類型為datetime。
根據我的標准,如果TransferTime為2018/01/30 01:30:59.000
則日期應為2018/01/29
我認為您可以簡單地這樣寫:
select
case when DATEPART(HOUR,'2018/01/30 01:30:59.000') >= 05 then cast('2018/01/30 01:30:59.000' as date)
else cast(dateadd(Dd,-1,'2018/01/30 01:30:59.000' )as date)
end
這有點模糊邏輯上的猜測,但也許使用CONVERT
和DATEADD
嗎?
WITH VTE AS(
SELECT CONVERT(datetime2(3),DT) AS DT
FROM (VALUES('20180130 04:59:59.000'),('20180131 01:00:34.000'),('20180130 01:30:59.000')) V(DT))
SELECT CONVERT(date, DATEADD(SECOND, -17999,DT)) AS D, DT
FROM VTE;
值得注意的是,您奇怪地指出'20180130 04:59:59.000'
和 ''20180131 04:59:59.000'
應該都在同一天( '20180130'
)。 這沒有任何意義,因為Days不會那樣重疊。 因此,后者時間將顯示為'20180131'
,因為恰好是24小時后。
如果是前者的時間實際上應該是'20180129'
,然后更改-17999
至-18000
,或SECOND,-17999
到HOUR, -5
。
這也可以做到:
select cast(dateadd(second, -17999,Transfertime) as date)
是17999 = 4hs59m59s以秒為單位
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.