簡體   English   中英

如何在SQL Server中比較日期時間?

[英]How to compare datetime in SQL Server?

如果日期時間介於2018/01/30 04:59:59.0002018/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 

這有點模糊邏輯上的猜測,但也許使用CONVERTDATEADD嗎?

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,-17999HOUR, -5

這也可以做到:

select cast(dateadd(second, -17999,Transfertime) as date)

是17999 = 4hs59m59s以秒為單位

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM