【问题标题】:SQL Server, strange DATETIME behaviourSQL Server,奇怪的 DATETIME 行为
【发布时间】:2011-05-16 05:29:04
【问题描述】:

我的本​​地系统上有 SQL Server Express 2008,我正在 datetime 列中插入一些内容。

问题是 Godaddy 上托管的 (SQL Server 2005) 上的同一生产系统将 datetime 条目记录为上一个日期和时间 13:00

例如插入的日期是07/01/2010 00:00:00

进入本地数据库 = 07/01/2010 00:00:00
Prod DB 中的条目 = 06/30/2010 13:00:00

可能是datetime 存储的一些服务器/数据库级别设置吗?

编辑1:

请注意,我正在插入一个预定义的datetime 值,插入的日期正是07/01/2010 00:00:00。我没有使用 GETDATE()。

编辑 2:解决方案

好的,谢谢大家的回答,但问题不是来自 SQL Server,而是来自从序列化数据集的 XML 形式读取的数据。它将日期时间信息发送为 'mm/dd/yyyy T00:00:00+4:00'

我所做的只是从中删除删除时间段,然后将其插入数据库中。

干杯!

【问题讨论】:

  • 您的生产系统的时区设置似乎比本地系统晚 11 小时。
  • 您使用什么代码/客户端来发送数据 ODBC? .net?
  • 在某些时候,无论是在存储期间,还是在读回数据时(或两者兼而有之),都会发生时区转换。但是我们看不到您的任何代码,无法将您指向发生的地点或时间。

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


【解决方案1】:
  • 您在迪拜 = GMT+y 小时
  • Godaddy 在美国 = GMT-x 小时

GETDATE() 给出 SQL 服务器时间

您应该使用 GETUTCDATE() 来提供 GMT(UTC,因为我们失去了我们的帝国,它看起来),这将在全球范围内保持一致。

【讨论】:

    【解决方案2】:

    时差让我想知道这是否是 UTC 问题。您是通过 SSMS 还是通过应用程序代码运行它?

    它总是比您当地的时间晚 11 小时吗?

    这是您指定列的明确时间,还是该列的默认时间(可能是GETUTCDATE ())?

    【讨论】:

      猜你喜欢
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多