【发布时间】:2014-12-08 02:38:58
【问题描述】:
我不知道这是否可能,但这真的很棒。我有一个登录表,供在不同项目上记录时间的人使用,我需要为每个项目在给定时间段内记录时间的报告。
我的桌子看起来像这样:
id | project | time_in | time_out | break
----------------------------------------------------------------
1 | 1 | 2014-12-07 05:00:00 | 2014-12-07 10:00:00 | 30
2 | 2 | 2014-12-07 06:00:00 | 2014-12-07 13:00:00 | 15
3 | 1 | 2014-12-07 14:00:00 | 2014-12-07 18:00:00 | 0
4 | 3 | 2014-12-07 08:30:00 | 2014-12-07 18:45:00 | 75
5 | 2 | 2014-12-07 12:00:00 | 2014-12-07 16:30:00 | 0
我想做的是在给定日期范围的情况下获取每个项目记录的时间报告,即每个项目记录的总时间(可能以秒为单位)。
time_in 和 time_out 是 TIMESTAMP 类型的字段; break 是一个整数,表示此人的休息时间分钟。我需要为每个项目获取time_out - time_in - break 的总和,例如12 月 7 日:
project | time
---------------
1 | 34200
2 | 40500
3 | 34200
这就是我目前所拥有的:
SELECT DISTINCT
`project`
FROM `sign_ins`
WHERE
`time_in` >= '2014-12-07 00:00:00' AND
`time_out` <= '2014-12-08 00:00:00';
感谢您对此提供的帮助,SO 社区。你们真是太棒了。
【问题讨论】:
-
我看到的一个问题是,您无法区分此人休息的时间。如果有time_in在12/7之前,time_out在12/7或之后的情况,他们休息了,你不知道休息的哪个部分落在12/7。
-
是的,这是架构中的潜在限制。但是,该界面将超时限制为与时间相同的日期(或第二天午夜),即如果您在下午 6 点到早上 6 点工作,则需要记录两个条目:第一天下午 6 点到 12 点,上午 12 点到早上 6 点第二,分别输入休息时间。
标签: mysql sql datetime select distinct