datetime2 截断到最后一个完整的 30 分钟时间段
datetime2 truncate to the last full 30 minute period
我正在尝试创建一个四舍五入到最后完成的 30 分钟时间段的函数。我对 30 分钟周期的定义是每小时和半小时(12、12:30、13、13:30,等等)
所以如果时间是 22:16
我希望它被截断为 22:00
但是,如果时间是 22:48
我希望结果是 22:30
.
目前我已经测试过:
DECLARE @RUN_DATE datetime2(1) = GETDATE();
DECLARE @Rounded datetime2(1) = dateadd(hour, datediff(hour, 0, dateadd(mi, 0, @RUN_DATE)), 0)
但是,这会将 22:38
舍入到 23:00
非常感谢任何提示:)
您可以使用以下技巧
DECLARE @RUN_DATE datetime2(1) = GETDATE();
DECLARE @Rounded datetime2(1) = DATEADD(mi, DATEDIFF(mi, 0, @RUN_DATE)/30*30, 0)
select @rounded
我正在尝试创建一个四舍五入到最后完成的 30 分钟时间段的函数。我对 30 分钟周期的定义是每小时和半小时(12、12:30、13、13:30,等等)
所以如果时间是 22:16
我希望它被截断为 22:00
但是,如果时间是 22:48
我希望结果是 22:30
.
目前我已经测试过:
DECLARE @RUN_DATE datetime2(1) = GETDATE();
DECLARE @Rounded datetime2(1) = dateadd(hour, datediff(hour, 0, dateadd(mi, 0, @RUN_DATE)), 0)
但是,这会将 22:38
舍入到 23:00
非常感谢任何提示:)
您可以使用以下技巧
DECLARE @RUN_DATE datetime2(1) = GETDATE();
DECLARE @Rounded datetime2(1) = DATEADD(mi, DATEDIFF(mi, 0, @RUN_DATE)/30*30, 0)
select @rounded