在过去的sql中转换为本地时间

时间:2015-03-30 10:54:59

标签: sql-server tsql timezone

我将时间戳存储在数据库中,以UTC表示,例如'2015-03-27 08:32:46.0​​24 +00:00'

我正在使用当前服务器时区将时间戳转换为本地时间。

select 
    SWITCHOFFSET (CAST(CAST('2015-03-27 08:32:00.000 +00:00' AS datetime2(3)) as DateTimeOffset(3)), DATEPART(TZ, SYSDATETIMEOFFSET ()) )

只要我在冬季查看冬季时间戳,这样就可以正常工作。

上周五时间冬季时间戳以夏令时间表示:'2015-03-27 10:32:00.000 +02:00'。

我想看2015-03-27 09:32:00.000 +01:00。

任何有解决方案但没有在数据库中存储冬季和夏季的人?

1 个答案:

答案 0 :(得分:0)

正如我在问题的评论中提到的,这通常最好在应用程序代码中完成,而不是在数据库中完成。但是,在某些情况下,在数据库中使用它可能非常有用或必要。例如,您可能需要分组特定时区中的日期,或者您可能需要批量转换多个项目,或为报告系统生成数据。

对于这些,您可以使用我的SQL Server Time Zone Support项目。

按照安装说明操作,您可以执行以下操作:

SELECT Tzdb.UtcToLocal('2015-03-27 08:32:46.024', 'Europe/Paris')

我在你的时区猜测。您可以选择任何from the list here