Mysql 如何显示计算的休假时间?
在MySQL数据库中,我已将数据插入到“leaves”表中:Mysql 如何显示计算的休假时间?,mysql,datetime,hour,seconds,minute,Mysql,Datetime,Hour,Seconds,Minute,在MySQL数据库中,我已将数据插入到“leaves”表中: +--------+---------+---------+-------------------------------+----- |Id_LEAVE|ID_WORKER| BEGIN_DATE | END_DATE | +--------+---------+------------+--------------------+------------+ | 4 | 2
+--------+---------+---------+-------------------------------+-----
|Id_LEAVE|ID_WORKER| BEGIN_DATE | END_DATE |
+--------+---------+------------+--------------------+------------+
| 4 | 26 | 2019-03-19 07:00:00 |2019-03-19 15:00:00 |
+--------+---------+---+----------------------+-------------------+
| 5 | 25 | 2019-03-20 07:00:00 |2019-03-21 15:00:00 |
+--------+---------+---------+----------------------+-------------+
| 6 | 21 | 2019-03-22 07:00:00 |2020-03-22 15:00:00 |
+--------+---------+---------+----------------------+-------------+
然后,我想显示所有带有计算的休假时间,但没有time\u格式
和SEC\u to\u时间
,因为我知道它有一个值限制。当我执行以下代码时:
select
ID_LEAVE, ID_WORKER, BEGIN_DATE, END_DATE,
concat_ws(' ',
concat((sec DIV 60*60), 'h'),
concat((sec DIV 60) % 60, 'm'),
concat(sec % 60, 's')
) AS 'LEAVE TIME'
from (
select
SUM(
to_seconds(
TIMEDIFF(END_DATE, BEGIN_DATE)
)
) sec,
ID_LEAVE,
ID_WORKER,
BEGIN_DATE,
END_DATE
from
leaves group by ID_LEAVE
) s;
然后,我显示所有这些值,但在“离开时间”列中,仅显示空值:
+--------+---------+---------+------------+-----------------------+-----------+
|Id_LEAVE|ID_WORKER| BEGIN_DATE | END_DATE |LEAVE_TIME |
+--------+---------+------------+--------------------+------------+-----------+
| 4 | 26 | 2019-03-19 07:00:00 |2019-03-19 15:00:00 | |
+--------+---------+---+----------------------+-------------------+-----------+
| 5 | 25 | 2019-03-20 07:00:00 |2019-03-21 15:00:00 | |
+--------+---------+---------+----------------------+-------------+-----------+
| 6 | 21 | 2019-03-22 07:00:00 |2020-03-22 15:00:00 | |
+--------+---------+---------+----------------------+-------------+-----------+
我有一个问题:不显示休假时间值的错误在哪里。我应该修复哪行Mysql代码?谢谢你的帮助 试试看,也许会有帮助
SELECT *,FROM_UNIXTIME(
UNIX_TIMESTAMP(
TIMEDIFF(END_DATE,BEGIN_DATE)
),
'%h Hours,%i Minutes,%s Seconds')
as 'LEAVE TIME'
FROM `leaves`
试试看,也许会有帮助
SELECT *,FROM_UNIXTIME(
UNIX_TIMESTAMP(
TIMEDIFF(END_DATE,BEGIN_DATE)
),
'%h Hours,%i Minutes,%s Seconds')
as 'LEAVE TIME'
FROM `leaves`
上面写的查询在我这边起作用了,你能在发出查询后尝试显示警告吗?这可能与您这边的sql_模式有关或类似。上面编写的查询在我这边有效,您可以在发出查询后尝试显示警告吗?它可能与您这边的sql_模式有关,或者类似的东西。