2016-08-05 23 views
-2

我想要做的是:
如果我選擇一個記錄之日起2016-06-01 06:00:002016-06-02 05:59:59它應該2016-06-01,而不是根據顯示02MSSQL:我如何才能找到在24小時的時間範圍內的日期字段記錄總是開始從早上6點到第二天早上6點

+3

發佈你的努力找到相同的,嘗試與查詢選擇記錄之間的日期2016-06-01 06:00:00和2016-06-02 05:59:59 – tharif

+0

你可能在找東西像'DATEADD(DAY,0,DATEDIFF(HOUR,'1900-01-01 06:00:00.000',myDate)/ 24)'(可能與'DATEDIFF分組(小時,'1900-01-01 06:00 :00.00 0',myDate)/ 24') – ZLK

+0

如果您正在尋求避免*第59秒期間發生*的記錄,那麼您的端點是正確的。否則,我強烈建議計算一個* exclusive *端點('2016-06-02T06:00:00')並使用'<'而不是'<='或'between'。獨佔端點往往更容易計算,並且不依賴於日期時間數據類型的精度。 –

回答

0

這是我想要做的。如果2016-06-01 06:00:00至2016年的日期有記錄,00:00:00至06:00:00之後的記錄應置於「2016-06-01 06:00:00」之內-06-02 6時○○分00秒

CASE WHEN DATEPART(HOUR,RechargeOn)< DATEADD(HOUR,6,RechargeOn) DATEADD(HOUR,18,DATEADD(DAY,-1,RechargeOn)) RechargeOn END

0

下... GROUP BY CAST((DATEADD(hour, -6, YourDate) AS DATE)

,如果你想找到「2016年8月5日」發生的記錄(根據您的要求你做

CAST((DATEADD(hour, -6, YourDate) AS DATE) = 2016-08-05' 

注意,在我的方法06:00:00然後就像在一個普通的一天系統「午夜」 - 即在6行程,這是新的一天

0

簡單的減法6小時:

select dateadd(hour, -6, mydate) 
from mytable 
相關問題