我使用Date_format()但由于某种原因它没有告诉我这些日子,它只是告诉我时间。例如,如果时间是51:01,它只显示03:00(48 + 3),如果时间是24:02,它只显示我12:02。
任何人都知道我应该使用什么?我计算2016年和2017年工人的最长工时。
这是我的代码:
select Year(Date) AS Year,WorkerID,
Date_format(sec_to_time(sum(time_to_sec(goes)-time_to_sec(comes))), '%h:%i') as H
FROM Info
Group by Year, WorkerID
答案 0 :(得分:0)
最简单的解决方案是使用十进制小时:
select Year(Date) AS Year, WorkerID,
(sum(time_to_sec(goes) - time_to_sec(comes))) / 3600 as decimal_hours
from Info
Group by Year, WorkerID;
如果你真的想要,你可以使用`concat将它变成HH:MM格式:
select Year(Date) AS Year, WorkerID,
concat_ws(':',
floor( (sum(time_to_sec(goes) - time_to_sec(comes))) / 3600),
lpad(floor(sum(time_to_sec(goes) - time_to_sec(comes))) / 60) % 60, 2, '0')
)
from Info
Group by Year, WorkerID;