【问题标题】:How to display calculated leave time?如何显示计算出的休假时间?
【发布时间】:2019-07-04 10:54:56
【问题描述】:

在 MySQL 数据库中,我已将数据插入到“叶子”表中:

+--------+---------+---------+-------------------------------+-----
|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_FORMATSEC_TO_TIME 因为我知道它有一个值限制。当我执行以下代码时:

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;

然后我显示所有这些,但在 LEAVE TIME 列中只显示空值:

+--------+---------+---------+------------+-----------------------+-----------+
|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    |           |
+--------+---------+---------+----------------------+-------------+-----------+

我有一个问题:不显示 LEAVE_TIME 值的错误在哪里。我应该修复哪几行 Mysql 代码?感谢您的帮助。

【问题讨论】:

  • 上面写的查询对我有用,你可以在发出查询后尝试show warnings吗?它可能与您身边的 sql_mode 或类似的东西有关。

标签: mysql datetime hour seconds minute


【解决方案1】:

试试吧,也许会有帮助

SELECT *,FROM_UNIXTIME(
    UNIX_TIMESTAMP(
        TIMEDIFF(END_DATE,BEGIN_DATE)
    ),
    '%h Hours,%i Minutes,%s Seconds') 
    as 'LEAVE TIME' 
FROM `leaves`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2020-12-02
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多