【发布时间】:2012-10-05 20:53:44
【问题描述】:
如何计算两个日期之间的时间差,考虑:
- 仅限周一至周五
- 上午 9 点到下午 5:30 之间的时间;
- 不包括节假日。
例子:
- d1 = 2012-10-05 17:00:00
- d2 = 2012-14-09 12:00:00
计算步骤:
- 2012-10-05 = 00:30:00
- 2012-10-06 = 00:00:00
- 2012-10-07 = 00:00:00
- 2012-10-08 = 07:30:00
- 2012-10-09 = 04:00:00
ddiff(d2,d1) = 12:00:00
我知道如何仅使用周一至周五 as described here 来做到这一点。我说的是 MySQL。
【问题讨论】:
-
这个问题很相似。也许你可以把它当作灵感。 stackoverflow.com/questions/593898/sql-datediff-advanced-usage
-
这将需要行级操作(光标),并且您将需要一个假期表。
-
@foampile 。 . .这不需要游标。日历表是识别节假日的首选方式,比仅包含节假日的表更好。
-
是的,您可以通过获取两个日期之间的行数以及 IS_WORK_DAY=1 乘以 8 加上第一个和最后一个日期的营业时间来使用日历表。 . 但是这涉及到一个日历表,而不是一个假日表......就个人而言,为了简单和代码清洁,我会选择一个简单的光标,但这是一个偏好问题
-
就个人而言,我会在应用层而不是 SQL 中进行此计算。想到 Perl
标签: mysql