将日期时间四舍五入到当前时间的开始

时间:2018-11-26 11:10:39

标签: sql sql-server datetime

我想将日期时间四舍五入(还应该返回一个日期时间)到开始的小时数的开始,例如:

2018-09-22 11:31:42.411 -> 2018-09-22 11:00:00.000
2018-09-22 11:08:02.456 -> 2018-09-22 11:00:00.000
2018-09-22 11:52:08.005 -> 2018-09-22 11:00:00.000

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

另一种方法是DATEADDDATEDIFF

SELECT DATEADD(HOUR, DATEDIFF(HOUR, '20000101',YourColumn),'20000101') AS RoundedValue
FROM YourTable;

答案 1 :(得分:1)

假设数据类型为DATETIMEDATETIME2,则可以使用以下常见技巧:

SELECT DATEADD(HOUR, DATEDIFF(HOUR, 0, yourdate), 0)

DATEDIFF(HOUR, 0, yourdate)将为您提供从第零个日期到您的日期之间的小时数(没有其他时间)。当您将这些小时数加回到第零个日期时,您的日期就会“加满”到该小时数。

答案 2 :(得分:1)

您可以使用DATETIMEFROMPARTS()函数。

select DATETIMEFROMPARTS(YEAR(@date),MONTH(@date),DAY(@date),DATEPART(HOUR,@date),00,00,00)

@date替换为YourColumn或任何变量。

答案 3 :(得分:0)

这会将值转换为字符串,剩余14个字符并添加00:00:00值

select  left(convert(varchar , datecol, 121),14) + '00:00:00'  as mydatecol from table