首页 > 数据库 > mysql教程 > 如何在 SQL SELECT 语句中将 UTC 日期时间列转换为本地时间?

如何在 SQL SELECT 语句中将 UTC 日期时间列转换为本地时间?

Mary-Kate Olsen
发布: 2025-01-17 04:42:09
原创
627 人浏览过

How to Convert a UTC Datetime Column to Local Time in SQL SELECT Statements?

SQL SELECT 语句中将UTC日期时间列转换为本地时间

在执行SQL SELECT查询时,可能需要将UTC日期时间列转换为本地时间,以增强可用性和提高数据表示的准确性。这可以通过针对所使用的SQL版本的特定技术来实现。

对于SQL Server 2008或更高版本:

  • 使用CONVERT函数结合SWITCHOFFSETCONVERT(datetimeoffset)将UTC列转换为本地时间,考虑系统时区的偏移量。

SQL语法:

<code class="language-sql">SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable</code>
登录后复制
  • 或者,使用更简洁的DATEADD函数进行转换。

SQL语法:

<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable</code>
登录后复制

注意:

避免使用减号-来减去日期进行转换,因为由于系统和本地日期时间之间的竞争条件,这可能会导致不可预测的结果。

附加说明:

提供的方法没有考虑夏令时 (DST)。有关DST调整,请参考Stack Overflow主题:

“如何在SQL Server中创建夏令时开始和结束函数”

以上是如何在 SQL SELECT 语句中将 UTC 日期时间列转换为本地时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板