编辑:在@fubar的帮助下回答
TIME_TO_SEC(DATE_SUB(TIMEDIFF(finish_time, start_time), INTERVAL break MINUTE)) / 3600
我有一张桌子:
start_time作为时间
finish_time作为时间
break as int(员工休息的分钟数)
total_hours as decimal,应该是员工工作的小时数。因此,如果start_time是5:00,则finish_time是13:00,break是30,total_hours应该是7.5
在phpMyAdmin中,将total_hours列设置为VIRTUAL,我应该放入什么表达式?我试过了
TIMEDIFF(finish_time, start_time)
开头,给了我70000.00(参数12:00:00,下午5:00),这让我意识到我不知道我在做什么,我应该问别人。
答案 0 :(得分:1)
以下SELECT
将为您提供工作总时数。
SELECT TIME_TO_SEC(DATE_SUB(TIMEDIFF(`finish_time`, `start_time`), INTERVAL `break` MINUTE)) / 3600 AS total_hours;
将其分解为它的组成部分:
找出开始和结束时间之间的时差。
SELECT TIMEDIFF('12:00:00', '05:00:00')
以分钟为单位减去休息间隔。
SELECT DATE_SUB(TIMEDIFF('12:00:00', '05:00:00'), INTERVAL 30 MINUTE);
将时差转换为秒。
SELECT TIME_TO_SEC(DATE_SUB(TIMEDIFF('12:00:00', '05:00:00'), INTERVAL 30 MINUTE));
将时间差(以秒为单位)转换为小时数除以60 * 60。
SELECT TIME_TO_SEC(DATE_SUB(TIMEDIFF('12:00:00', '05:00:00'), INTERVAL 30 MINUTE)) / 3600 AS total_hours;