【发布时间】:2020-12-20 01:28:36
【问题描述】:
我有一个看起来像这样的表:
job | start_time | end_time
----------------------------------------------------------
1 | 2020-08-31 09:46:00.000 | 2020-08-31 12:37:00.000
2 | 2020-08-31 09:54:00.000 | 2020-08-31 10:24:00.000
3 | 2020-08-31 05:52:00.000 | 2020-08-31 06:32:00.000
4 | 2020-08-31 05:02:00.000 | 2020-08-31 13:24:00.000
我需要以分钟为单位计算 start_time 和 end_time 之间的 elapsed_time,但如果 elapsed_time 跨越 8:45am 和 9:00am 则减去 15 分钟和/或如果 elapsed_time 跨越 @ 则减去 30 分钟987654329@和12:00pm。
输出应如下所示:
job | start_time | end_time | elapsed_time
-------------------------------------------------------------------------
1 | 2020-08-31 09:46:00.000 | 2020-08-31 12:37:00.000 | 141
2 | 2020-08-31 09:54:00.000 | 2020-08-31 10:24:00.000 | 30
3 | 2020-08-31 05:52:00.000 | 2020-08-31 06:32:00.000 | 40
4 | 2020-08-31 05:02:00.000 | 2020-08-31 13:24:00.000 | 457
感谢您的帮助!
编辑:
我目前计算分钟数:
SELECT DATEDIFF(minute, start_time, end_time) FROM jobtran
然后将数据集导出到 Excel 并从那里手动计算。
【问题讨论】:
-
请向我们展示您的尝试。
-
如果时间段与两个固定范围重叠,比如从上午 8:50 到上午 11:40,该怎么办?
-
如果发生这种情况,我希望它减去 15 分钟(8:45-8:50 为 5 分钟,11:30-11:40 为 10 分钟)
-
我希望我可以说我有一个 excel 公式来计算 - 我正在手动计算。
-
好吧,如果您考虑使用手动计算的逻辑,然后尝试将其转换为计算逻辑......这就是我解决任何问题的方式。
标签: sql sql-server tsql datediff