Mysql phpmyadmin中用于计算工作小时数的虚拟列
编辑:在@fubar的帮助下回答Mysql phpmyadmin中用于计算工作小时数的虚拟列,mysql,phpmyadmin,Mysql,Phpmyadmin,编辑:在@fubar的帮助下回答 TIME_TO_SEC(DATE_SUB(TIMEDIFF(finish_time, start_time), INTERVAL break MINUTE)) / 3600 我有一张桌子: 开始时间作为时间 完成时间作为时间 休息时间(员工休息的分钟数) 以小数形式表示的总小时数,应为员工工作的小时数。因此,如果开始时间为5:00,结束时间为13:00,休息时间为30,则总时间应为7.5小时 在phpMyAdmin中,将total_hours列设置为VIRT
TIME_TO_SEC(DATE_SUB(TIMEDIFF(finish_time, start_time), INTERVAL break MINUTE)) / 3600
我有一张桌子:
开始时间作为时间
完成时间作为时间
休息时间(员工休息的分钟数)
以小数形式表示的总小时数,应为员工工作的小时数。因此,如果开始时间为5:00,结束时间为13:00,休息时间为30,则总时间应为7.5小时
在phpMyAdmin中,将total_hours列设置为VIRTUAL,我应该输入什么表达式?我试过了
TIMEDIFF(finish_time, start_time)
首先,它给了我70000.00(参数为12:00:00,5:00:00),这让我意识到我不知道自己在做什么,我应该问问别人。下面的
选择将为您提供总工作时间
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;
当我运行时,选择TIMEDIFF('12:00','5:00')代码>,我得到07:00:00
。您如何获得70000.00
?您是否正在以某种方式投射或操纵结果?抱歉,它是05:00:00和12:00:00,因此70000.00可能是7:00:00的时间值。字段数据类型是decimal(26,2),如果这有助于复制我刚才所做的,那么字段类型是decimal。我已将其更改为Time,但我仍然需要虚拟环境下phpmyadmin中的表达式来从我从TIMEDIFF()获得的时间中减去休息分钟数。DATEADD(minutes,-break,(TIMEDIFF(finish_time,start_time)))给了我一个错误“列total_hours不允许使用函数或表达式”太好了,谢谢!对于虚拟表达式,将其作为TIME-TO-SEC(DATE-SUB(TIMEDIFF(finish-TIME,start-TIME),INTERVAL-break-MINUTE))/3600输入,它就工作了