微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

datetime2 截断到最后一个完整的 30 分钟时间段

如何解决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 举报,一经查实,本站将立刻删除。