在 SQL Server 查询中有效地将 UTC 日期时间列转换为本地时间对于准确的数据呈现和分析至关重要。 以下是有效的方法,可以避免潜在的陷阱:
SQL Server 2008 及更高版本:
SWITCHOFFSET()
和 CONVERT()
: 这种强大的方法可以处理时区偏移:<code class="language-sql">SELECT CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, MyTable.UtcColumn), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) AS ColumnInLocalTime FROM MyTable</code>
DATEADD()
、 DATEDIFF()
和 GETDATE()
: 更简洁的替代方案:<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) AS ColumnInLocalTime FROM MyTable</code>
重要提示: 强烈建议不要使用 -
运算符直接进行日期减法。 由于潜在的竞争条件,这可能会导致不可预测的结果。
夏令时 (DST) 注意事项:
上述方法本身并不处理 DST 转换。如需精确的 DST 调整,请参阅 Stack Overflow 资源:
以上是如何在 SQL Server 中将 UTC 日期时间列转换为本地时间?的详细内容。更多信息请关注PHP中文网其他相关文章!