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

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

Patricia Arquette
发布: 2025-01-17 04:27:10
原创
752 人浏览过

How to Convert UTC Datetime Columns to Local Time in SQL Select Statements?

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

执行 SQL select 查询时,可能需要将 UTC 日期时间列转换为本地时间,以方便更轻松的操作解释和展示。这种转换无需修改数据库或使用外部代码即可完成。

转换方法

在 SQL Server 2008 或更高版本中,可以使用以下语法:

SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable
登录后复制

更短的替代方案是:

SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable
登录后复制

注意事项

避免使用减法 (-) 来计算日期差异非常重要,因为这种方法可能会因非原子操作而导致结果不准确。

DST 调整

提供的方法不考虑夏令时 (DST)。如果需要调整夏令时,请参考以下问题:

  • [如何在 SQL Server 中创建夏令时开始和结束函数](https://stackoverflow.com/questions/2614192/how -在sql服务器中创建夏令时时间开始和结束功能)

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

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