【问题标题】:SQL - Transform GETDATE() into the exactly hourSQL - 将 GETDATE() 转换为精确的小时
【发布时间】:2017-06-12 15:53:57
【问题描述】:

我有这个:

SELECT GETDATE()

这给了我:

2017-06-12 16:51:50.410

如何转换才能得到:

2017-06-12 16:00:00.000

我有一些流程,我正在注册工作的日期和时间,但我只想要确切的时间。

我该怎么做?

谢谢

【问题讨论】:

    标签: sql tsql datetime getdate


    【解决方案1】:

    要将getdate() 截断为小时:

    select dateadd(hour, datediff(hour, 0, getdate() ), 0)
    

    这会将自1900-01-01 到日期1900-01-01 的小时数相加。

    您还可以将hour 交换为其他级别的截断:年、季度、月、日、分钟、秒等。

    【讨论】:

      【解决方案2】:

      我认为最易读的解决方案是:

      SELECT convert(datetime,FORMAT(GETDATE(),'yyyy-MM-dd HH:00:00.000'))
      
      • FORMAT 以获得您想要的 GETDATE 时间戳。

      • CONVERT 以确保数据类型是日期时间。

      【讨论】:

      • hh 是 12 小时制,所以 13:00 是凌晨 1 点
      • 谢谢约翰。 24 小时制更新为从 hh 到 HH。
      • 不用担心。只是不希望 OP 得到意想不到的结果。争论的焦点。看起来我们都被否决了。如果以负责任的方式使用 Format() 是一个有效的解决方案。很多人不这么看
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      相关资源
      最近更新 更多