You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并T-SQL查询将UTC小时转换为PDT时区?(SQL Server 2014)

解决方案

SQL Server 2014没有内置的AT TIME ZONE时区转换函数(该功能从2016版本开始引入),所以我们需要手动处理PDT时区的偏移逻辑,PDT为UTC-7小时,若需自动识别夏令时切换可参考下方进阶方案。以下是合并后的查询实现:

1. 仅按PDT本地时区小时统计

SELECT 
    DATEPART(HOUR, DATEADD(HOUR, -7, UTC_Time)) AS PDT_Hour,
    COUNT(*) AS Record_Count
FROM YourTable
WHERE UTC_Time >= '指定起始日期' AND UTC_Time < '指定结束日期'
GROUP BY DATEPART(HOUR, DATEADD(HOUR, -7, UTC_Time))
ORDER BY PDT_Hour;

2. 同时保留UTC小时和PDT小时统计

如果需要同时对比UTC与PDT的小时统计数据,可使用以下查询:

SELECT 
    DATEPART(HOUR, UTC_Time) AS UTC_Hour,
    DATEPART(HOUR, DATEADD(HOUR, -7, UTC_Time)) AS PDT_Hour,
    COUNT(*) AS Record_Count
FROM YourTable
WHERE UTC_Time >= '指定起始日期' AND UTC_Time < '指定结束日期'
GROUP BY DATEPART(HOUR, UTC_Time), DATEPART(HOUR, DATEADD(HOUR, -7, UTC_Time))
ORDER BY UTC_Hour;

进阶:自动识别太平洋时区夏令时(PST/PDT切换)

若需要自动根据日期判断是使用PST(UTC-8)还是PDT(UTC-7),可以自定义函数实现夏令时区间判断:

CREATE FUNCTION dbo.GetPacificTimeOffset(@UTCTime DATETIME)
RETURNS INT
AS
BEGIN
    DECLARE @LocalTime DATETIME = DATEADD(HOUR, -8, @UTCTime); -- 先转换为PST基准时间
    -- 计算当年夏令时开始时间:3月第二个周日的2点
    DECLARE @DSTStart DATETIME = DATEADD(HOUR, 2, DATEADD(WEEK, 1, DATEADD(DAY, 1-DATEPART(WEEKDAY, '3/1/' + CAST(YEAR(@LocalTime) AS VARCHAR)), '3/1/' + CAST(YEAR(@LocalTime) AS VARCHAR))));
    -- 计算当年夏令时结束时间:11月第一个周日的2点
    DECLARE @DSTEnd DATETIME = DATEADD(HOUR, 2, DATEADD(WEEK, 0, DATEADD(DAY, 1-DATEPART(WEEKDAY, '11/1/' + CAST(YEAR(@LocalTime) AS VARCHAR)), '11/1/' + CAST(YEAR(@LocalTime) AS VARCHAR))));
    
    RETURN CASE WHEN @LocalTime BETWEEN @DSTStart AND @DSTEnd THEN -7 ELSE -8 END;
END;

调用该函数实现自动时区转换的统计:

SELECT 
    DATEPART(HOUR, DATEADD(HOUR, dbo.GetPacificTimeOffset(UTC_Time), UTC_Time)) AS Local_Hour,
    COUNT(*) AS Record_Count
FROM YourTable
WHERE UTC_Time >= '指定起始日期' AND UTC_Time < '指定结束日期'
GROUP BY DATEPART(HOUR, DATEADD(HOUR, dbo.GetPacificTimeOffset(UTC_Time), UTC_Time))
ORDER BY Local_Hour;

内容的提问来源于stack exchange,提问作者philipgonzales3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:26:26