【问题标题】:SQL Server equivalent of MySQL's NOW()?SQL Server 相当于 MySQL 的 NOW()?
【发布时间】:2010-09-27 22:55:22
【问题描述】:

我是一名从事 SQL Server 项目的 MySQL 人员,试图获取一个日期时间字段来显示当前时间。在 MySQL 中我会使用 NOW() 但它不接受。

INSERT INTO timelog (datetime_filed) VALUES (NOW())

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    getdate()getutcdate()

    【讨论】:

      【解决方案2】:
      getdate() 
      

      是直接等效的,但您应该始终使用 UTC 日期时间

      getutcdate()
      

      您的应用程序是否跨时区运行 - 否则您将面临在春季/秋季转换时搞砸日期数学的风险

      【讨论】:

      • 是否存在时区更改跨越日期更改的地方?在 PST 中,时区更改总是在午夜过后几个小时发生。
      【解决方案3】:

      SYSDATETIME()SYSUTCDATETIME()

      DateTime2 的等价物

      GetDate()GetUTCDate()

      返回一个DateTime

      DateTime2 现在是在 SQL Server 2008+ 中存储日期和时间的首选方法。请参阅以下StackOverflow Post

      【讨论】:

        【解决方案4】:

        您也可以使用CURRENT_TIMESTAMP,如果您希望更符合 ANSI 标准(不过,如果您在数据库供应商之间移植代码,那将是您最不必担心的问题)。它与封面下的GetDate() 完全相同(有关更多信息,请参阅this question)。

        但是,GetUTCDate() 没有 ANSI 等效项,如果您的应用在多个时区运行,您可能应该使用它...

        【讨论】:

        • 我喜欢CURRENT_TIMESTAMP,因为它可以在 MySQL、SQL Server、Oracle 中使用...正如您所说,这是我们最不担心的问题,但它总是有帮助。
        猜你喜欢
        • 2010-10-25
        • 2011-03-27
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 1970-01-01
        • 2011-03-08
        • 2010-10-08
        相关资源
        最近更新 更多