我有一个(可能)简单的问题,在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中完成,而不是在某处...后面的代码...
有什么想法吗?