日期时间计算包括DST和UTC

时间:2016-04-06 08:24:50

标签: sql sql-server datetime utc dst

我有一个(可能)简单的问题,在Sql Server 2008查询中计算正确的DST DateTime。让我解释一下:

我们有一个表,比如说T_User,有一些关于用户数据的列,可以由用户自己修改。除此之外,我们还有两个DateTime列,sysDatetTimeCreated和sysDateTimeModified。要更新这些值,我们使用GetUtcDate()函数,这是完美的。每个用户还有一个带有TimeZoneValue的列。因此,如果用户位于东欧且具有TimeZone值(UTC + 1:00),并在表中修改其用户属性,则将使用GetUtcDate()值更新sysDateTimeModified列。

在网络表单上,我想根据表中设置的TimeZone向用户显示真实的日期时间。 这里的问题是不包括DST。这是我的例子:

sysDateTimeCreated(UTC)       sysDateTimeModified(UTC)           CalculatedDateTimeModified(wrong)         FinalDateTimeModification(should be)

2016-04-06 08:08:27.657       2016-04-06 08:18:17.227            2016-04-06 09:18:17.227                   2016-04-06 10:18:17.227

另一件事,如果用户从欧洲移动到北美,用户TimeZone将更改为(UTC-05:00)。更新用户数据后,系统将存储正确的utc日期,但用户将根据其当前时区看到正确的日期:DATEADD(HOUR,-5,GETUTCDATE())。

如何在需要时使用DST? - 例如:北美(或任何其他国家)不使用夏令时,欧洲也不...

这些计算必须在SQL中完成,而不是在某处...后面的代码...

有什么想法吗?

0 个答案:

没有答案