UTC到EST SQL Server 2008

时间:2017-09-05 20:08:37

标签: sql sql-server sql-server-2008 datetime dst

我们在SQL Server 2008中有数据,有多个日期时间列。由于SQL Server中的日期格式是一个大整数值,即自1970年以来的秒数,我们使用DATEADD()函数将其转换为实际的日期时间格式。但我们面临的问题是,当我们使用DATEADD()时,我们以UTC时区获取数据,而我们需要EST中的数据。我尝试从当时只使用-4 HR,但在NOV - MAR期间我们提前1 HR因为当白天时间关闭时差异为5 HR。是否有任何可以使用的功能,考虑夏令时。任何帮助表示赞赏。

Current Function -> DATEADD(s, columnName, '01/01/1970 00:00:00')

问候,Sahil

3 个答案:

答案 0 :(得分:0)

试试这个:

DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), columnName) 

答案 1 :(得分:0)

您可以使用我的SQL Server Time Zone Support项目。它使用IANA标准时区名称as listed here

根据您的示例,以下内容首先从UNIX时间戳转换为基于UTC的datetime,然后转换为美国东部时区的datetime

SELECT Tzdb.UtcToLocal(DATEADD(s, columnName, '1970-01-01 00:00:00'), 'America/New_York')

答案 2 :(得分:-1)

我会写一个与时间数据库交互的UDF,例如来自worldtimeserver.com的数据库 - 我与他们没有关联,并通过快速的互联网搜索找到它。

进一步的研究表明,timezonedb.com拥有免费(如果是非商业性)会员资格,允许下载数据库,并提供有关如何使用SQL Server和MySQL的示例。

相关问题