2017-06-12 64 views
2

我有这样的:SQL - 变换GETDATE()到正好小时

SELECT GETDATE() 

这给了我:

2017-06-12 16:51:50.410 

我如何转换这种为了得到:

2017-06-12 16:00:00.000 

我有一些过程,我正在注册工作的日期和时间,但我只想要一个小时。

我该怎么做?

感谢

回答

4

要获得getdate()截断小时:

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

这增加的小时数,因为1900-01-01的日期1900-01-01

您还可以将hour换成其他级别的截断:年,季,月,日,分,秒等等。

-1

我觉得最可读的解决方案是:

SELECT convert(datetime,FORMAT(GETDATE(),'yyyy-MM-dd HH:00:00.000')) 
  • FORMAT得到GETDATE时间戳正是你想要的。

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

+0

hh是12小时制,因此13:00将是凌晨1个 –

+0

感谢约翰。更新为从24小时到HH。 – GlennFriesen

+1

不用担心。只是不希望OP得到意想不到的结果。争论的焦点。看起来我们都被压低了。如果以负责任的方式使用Format()是一个有效的解决方案。许多人不这样看 –