如何解决datetime2 截断到最后一个完整的 30 分钟时间段
我正在尝试创建一个四舍五入到最后完成的 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,dateadd(mi,@RUN_DATE)),0)
然而,这会将 22:38
舍入到 23:00
非常感谢任何提示:)
解决方法
您可以使用以下技巧
DECLARE @RUN_DATE datetime2(1) = GETDATE();
DECLARE @Rounded datetime2(1) = DATEADD(mi,DATEDIFF(mi,@RUN_DATE)/30*30,0)
select @rounded
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。