在SQL查询中将UTC日期时间列转换为本地时间
在SQL查询中处理UTC日期时间有时可能不太方便,尤其是在需要以本地时区显示它们时。 通过简单的技术可以将UTC日期时间转换为本地时间,从而无需基于代码的转换。
SQL Server 2008及更高版本的解决方案:
对于SQL Server 2008或更高版本,请使用以下查询:
<code class="language-sql">SELECT CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, MyTable.UtcColumn), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) AS ColumnInLocalTime FROM MyTable</code>
替代语法:
或者,您可以使用以下简化版本:
<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) AS ColumnInLocalTime FROM MyTable</code>
注意:避免减去日期
务必注意,不建议使用 - 运算符减去日期,因为这可能会由于竞争条件而导致不确定的结果。
考虑夏令时 (DST)
此提供的解决方案未考虑DST调整。如有必要,请参考以下Stack Overflow问题:
https://www.php.cn/link/95743904f0de5aa6327dee27efdc81b4
以上是如何在 SQL Server 中将 UTC 日期时间转换为本地时间?的详细内容。更多信息请关注PHP中文网其他相关文章!