我将时间戳存储在数据库中,以UTC表示,例如'2015-03-27 08:32:46.024 +00:00‘
我使用当前的服务器时区将时间戳转换为本地时间。
select
SWITCHOFFSET (CAST(CAST('2015-03-27 08:32:00.000 +00:00' AS datetime2(3)) as DateTimeOffset(3)), DATEPART(TZ, SYSDATETIMEOFFSET ()) )
只要我在wintertime中查看wintertime时间戳,就可以很好地工作。
对于上个星期五的时间,冬季时间戳以夏季时间表示:'2015-03-27 10:32:00.000 +02:00‘。
我想看2015-03-27 09:32:00.000 +01:00。
谁有不在数据库中存储冬季和夏季的解决方案?
发布于 2015-04-03 05:16:24
正如我在问题的注释中提到的,这通常最好在应用程序代码中完成,而不是在数据库中完成。但是,在某些情况下,将它保存在数据库中可能非常有用,或者是必要的。例如,您可能需要按特定时区中的日期进行分组,或者可能需要批量转换许多项,或者为报表系统生成数据。
对于这些,您可以使用我的SQL Server Time Zone Support项目。
按照安装说明进行操作,然后您可以执行以下操作:
SELECT Tzdb.UtcToLocal('2015-03-27 08:32:46.024', 'Europe/Paris')
我猜是在你的时区。您可以选择任何from the list here。
https://stackoverflow.com/questions/29344346
复制相似问题