Sql-Server

查詢 MST 而不是 UTC 的時間戳

  • February 2, 2015

在 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 觀察地區除外)的所有時間範圍內,實際上並不相同。如果您希望它成為人們/軟體將長期使用的查詢,您需要找出一種不同的方法將值調整到所需的時區。

引用自:https://dba.stackexchange.com/questions/90846