【问题标题】:Sql Server migration, other datetimeSql Server 迁移,其他日期时间
【发布时间】:2014-01-14 17:28:37
【问题描述】:

我有一个位于 UTC + 1 (SQL SERVER) 的网站。

我已经迁移了网站,现在我已经在 UTC - 8(SQL SERVER)。

所以我有 9 小时的差异。

我有一个基于一天开始的自动发布帖子。

所以我通常在 UTC + 1 每天 0.00 发布一个帖子,但现在它会在 9 小时后发布...

我所有的选择子句都以:

结尾
select id, title, content 
from articles 
**where dateScheduled <= getdate()**

如果我想在 1 月 25 日发布帖子,我需要等到 UTC - 8 的 1 月 25 日,但我想提前 9 小时发布==> 1 月 25 日UTC + 1。

您认为最好的方法是什么?

非常感谢!!

【问题讨论】:

    标签: sql datetime sql-server-2008-r2 utc getdate


    【解决方案1】:

    我对你的要求有点困惑。您是否尝试在当地时间午夜而不是 UTC 时间午夜发布这些记录?

    你有没有研究过这样的事情:

    DATEADD(hh,DATEDIFF(hh,GETUTCDATE(),GETDATE()),dateScheduled)
    

    DATEDIFF 提取本地时间与 UTC + 0 时间相差多少小时,然后将该差异添加到日期列中。如果您的时区实行 DST,这很有用,因此您不必更改硬编码的 -8 值。

    如果这有帮助,请告诉我。如果没有,请澄清您要做什么,我会看看。

    【讨论】:

    • 那么,如果我理解你的解决方案:如果 SQL Server 是 UTC + 8,这句话是在 dateScheduled 上加 8 小时?
    • 不,该命令使用服务器本地时间和 UTC 时间之间的差异来填充 datescheduled 列。如果您的日期计划文件为本地时间(服务器或您的本地时间与 UTC 时间格式),则将使用此选项。我们正在将时间列转换为 UTC 格式,以减轻您在使用时区和 DST 时遇到的痛苦。
    • 您能否澄清原始帖子中的最后一句话,这将帮助我弄清楚您要做什么。 “如果我想在 1 月 25 日发布帖子,我需要等到 1 月 25 日(UTC - 8),但我想提前 9 小时发布==> 1 月 25 日(UTC +) 1."您希望在 1 月 25 日什么时候发布,UTC + 1?
    • 好的,最重要的是:我想以 UTC + 1 时间发布记录。 SQL Server 是 UTC - 8。谢谢!!!!
    • 好的.. 这行得通吗:WHERE dateScheduled
    猜你喜欢
    • 1970-01-01
    • 2018-03-10
    • 2015-03-07
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2015-01-28
    相关资源
    最近更新 更多