【发布时间】:2011-06-17 08:42:00
【问题描述】:
我在 MySQL 中做了一个表格,以 datetime 类型存储工作班次的开始和结束时间。我需要从它们中计算两件事(在 MySQL 中)。首先,某人在晚上 10 点到早上 6 点之间的某个班次中工作了多少分钟,以及某人在周日工作了多少分钟。星期天应该优先于那些晚上的时间,并且不应该把那些星期天的早晨计算两次。
提前谢谢你。
D.
顺便说一句,我试过了,但没用:
SELECT *,
IF(DAYNAME(start)=DAYNAME(end),
IF(TIME(start)<='6:00:00' AND TIME(end)<='6:00:00',TIME(end)-TIME(start),
IF(TIME(start)>='22:00:00' AND TIME(end)>='22:00:00',TIME(end)-TIME(start),
IF(TIME(start)>='6:00:00' AND TIME(end)<='22:00:00',0,
IF(TIME(start)<='6:00:00' AND TIME(end)<='22:00:00','6:00:00'-TIME(start),
IF(TIME(start)>='6:00:00' AND TIME(end)>='22:00:00',TIME(end)-'22:00:00',NULL)
)
)
)
),
IF(TIME(start)<='22:00:00' AND TIME(end)<='6:00:00','2:00:00'+TIME(end),
IF(TIME(start)<='22:00' AND TIME(end)>='6:00:00','8:00:00',
IF(TIME(start)>='22:00:00' AND TIME(end)<='6:00:00','24:00:00'-TIME(start)+TIME(end),
IF(TIME(start)>='22:00:00' AND TIME(end)>='6:00:00','24:00:00'-TIME(start)+'6:00:00',NULL)
)
)
)
) AS ExtraTime FROM `work`
【问题讨论】:
-
您使用什么编程语言向 MySQL 发送查询?广告@m
-
目前没有。我想在 MySQL 中做到这一点。但如果没有简单的解决方案,PHP 也可以。
标签: mysql datetime calendar shift overlapping