0
我讀datediff rounding有關MS SQL Server和迅速做出例如:使用DATEDIFF(MINUTE,GETUTCDATE(),GETDATE())獲取本地SQL Server時區偏移量是否安全?
select datediff(hour,'2015-04-15 19:59:59','2015-04-15 22:00:00')
go
3
(1 row affected)
select datediff(minute,'2015-04-15 19:59:59','2015-04-15 22:00:00')
go
121
(1 row affected)
select datediff(second,'2015-04-15 19:59:59','2015-04-15 22:00:00')
go
7201
(1 row affected)
有很多建議(在博客/ SO)通過調整時間本地:
DATEADD(MINUTE, DATEDIFF(MINUTE, GETUTCDATE(), GETDATE()), DATETIME_COLUMN)
似乎它是危險和結果取決於執行查詢的時間。
還是有保證GETUTCDATE()
和GETDATE()
指向相同的時間戳,如果他們在相同的查詢?
您的datediff問題與rounding - datediff無關,只是衡量已經通過的間隔數。 19:59甚至19:01之間的差異以及22:00或甚至22:59的較晚時間將導致幾小時的相同結果,因爲在這兩種情況下,時鐘的小時已經改變了3次。你有關轉換爲UTC的問題是合法的,但它不涉及四捨五入,也不涉及與datediff這種行爲(這不是一個錯誤,不應該被視爲這樣)。 –
所以我建議重點關注主要問題並刪除問題的前半部分。 –