问题描述
在 sql Server 2016 之前,将非当前 UTC 日期转换为本地时间的最佳方法是使用 Microsoft .Net 公共语言运行时或 CLR。
代码本身很简单;困难的部分通常是让人们相信 CLR 不是纯粹的邪恶或可怕......
不幸的是,在 sql Server 2016 之前没有任何内置可以处理这种类型的转换,除了基于 CLR 的解决方案。你可以编写一个 T-sql 函数来做这样的事情,但是你必须自己实现日期更改逻辑,我认为这绝对不容易。
解决方法
我目前使用以下方法从 UTC 日期时间获取本地日期时间:
SET @offset = DateDiff(minute,GetUTCDate(),GetDate())
SET @localDateTime = DateAdd(minute,@offset,@utcDateTime)
我的问题是,如果夏令时发生在GetUTCDate()
和之间@utcDateTime
,@localDateTime
最终会休息一个小时。
是否有一种简单的方法可以将非当前日期的日期从 UTC 转换为当地时间?
我正在使用 SQL Server 2005