phpmyadmin中的虚拟列来计算工作小时数

时间:2018-04-05 01:10:55

标签: mysql phpmyadmin

编辑:在@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),这让我意识到我不知道我在做什么,我应该问别人。

1 个答案:

答案 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;