Sql-Server
查詢 MST 而不是 UTC 的時間戳
在 SQL Server 上,我試圖根據時間戳查詢上個月的所有數據,但是,所有這些時間戳都是 UTC,我需要它們在 MST 中(原因主要是結束日期)
到目前為止,這就是我所擁有的:
Select Vehicle.Timestamp WHERE Vehicle.Timestamp >= DATEADD(mm,DATEDIFF(mm,32,GETUTCDATE()),0) AND Vehicle.Timestamp < DATEADD(mm,DATEDIFF(mm,0,GETUTCDATE()),0) order by Vehicle.Timestamp
我不完全確定前進的方向。
但是,我已經看到了使用它,
switchoffset
但不確定應用它的最佳方式。
如果您只需要一次性查詢,我建議您這樣做:
WITH AdjustedVehicleInfo AS ( SELECT DATEADD(HOUR, -7, Timestamp) AS MST_Timestamp FROM Vehicle ) SELECT MST_Timestamp FROM AdjustedVehicleInfo WHERE MST_Timestamp BETWEEN @StartDate AND @EndDate
where
@StartDate
和@EndDate
設置為 MST 時間。我提出該免責聲明的原因是,MST 之間的偏移量
GETDATE()
並不GETUTCDATE()
總是 -7,而且對於大多數時區(亞利桑那州和其他非 DST 觀察地區除外)的所有時間範圍內,實際上並不相同。如果您希望它成為人們/軟體將長期使用的查詢,您需要找出一種不同的方法將值調整到所需的時區。