gpt4 book ai didi

mysql - MySQL 中的添加和删除时间

转载 作者:行者123 更新时间:2023-11-29 21:37:58 24 4
gpt4 key购买 nike

在 MySQL 表中,我有这些值 00:00:0006:00:00 .

我需要不到三个小时的时间 00:00:00 ,返回21:00:00并在06:00:00上添加三个小时,返回09:00:00 .

我尝试过这个sql查询,但没有成功。

请帮助我,先谢谢你。

mysql> SELECT
SUBTIME('00:00:00', 3),
ADDTIME('06:00:00', 3);
+------------------------+------------------------+
| SUBTIME('00:00:00', 3) | ADDTIME('06:00:00', 3) |
+------------------------+------------------------+
| -00:00:03 | 06:00:03 |
+------------------------+------------------------+
1 row in set

mysql>

#编辑 1

mysql> SELECT
'00:00:00' - INTERVAL 3 HOUR,
'06:00:00' + INTERVAL 3 HOUR;
+------------------------------+------------------------------+
| '00:00:00' - INTERVAL 3 HOUR | '06:00:00' + INTERVAL 3 HOUR |
+------------------------------+------------------------------+
| NULL | NULL |
+------------------------------+------------------------------+
1 row in set

mysql>

#编辑2

mysql> SELECT
DATE_ADD('00:00:00', INTERVAL 3 HOUR),
DATE_ADD('06:00:00', INTERVAL 3 HOUR);

SELECT
SUBTIME('00:00:00', '03:00:00'),
ADDTIME('06:00:00', '03:00:00');
+---------------------------------------+---------------------------------------+
| DATE_ADD('00:00:00', INTERVAL 3 HOUR) | DATE_ADD('06:00:00', INTERVAL 3 HOUR) |
+---------------------------------------+---------------------------------------+
| NULL | NULL |
+---------------------------------------+---------------------------------------+
1 row in set

+---------------------------------+---------------------------------+
| SUBTIME('00:00:00', '03:00:00') | ADDTIME('06:00:00', '03:00:00') |
+---------------------------------+---------------------------------+
| -03:00:00 | 09:00:00 |
+---------------------------------+---------------------------------+
1 row in set

mysql>

最佳答案

由于实际上不存在“-00:00:03”这样的时间,因此您无法应用时间操作来执行此类操作。

如果您确实需要这样做,我建议您

  1. 将列改为INT类型,自行操作。
  2. 将列更改为DATETIME类型,并尝试自行处理跨日问题。
  3. 或者应用以下...

    SELECT CONCAT(
    TIMESTAMPDIFF(
    HOUR,
    STR_TO_DATE(CONCAT('2015/01/01 ', '00:00:00'), '%Y/%m/%d %H:%i:%s'),
    STR_TO_DATE(CONCAT('2015/01/01 ', '00:00:00'), '%Y/%m/%d %H:%i:%s') - interval 3 hour
    ) % 24,
    ":",
    TIMESTAMPDIFF(
    MINUTE,
    STR_TO_DATE(CONCAT('2015/01/01 ', '00:00:00'), '%Y/%m/%d %H:%i:%s'),
    STR_TO_DATE(CONCAT('2015/01/01 ', '00:00:00'), '%Y/%m/%d %H:%i:%s') - interval 3 hour
    ) % 60,
    ":",
    TIMESTAMPDIFF(
    SECOND,
    STR_TO_DATE(CONCAT('2015/01/01 ', '00:00:00'), '%Y/%m/%d %H:%i:%s'),
    STR_TO_DATE(CONCAT('2015/01/01 ', '00:00:00'), '%Y/%m/%d %H:%i:%s') - interval 3 hour
    ) % 60
    );

    只需将 '00:00:00'3 hour 替换为您想要的任何内容即可。

它只是尝试将时间连接到日期时间字符串,并将其转换为日期时间,然后应用间隔操作。之后,它应用 timediff 按给定单位计算耗时(不要忘记 % 以获得正确的域)。最后连接三个差异。

这个答案有点难看,希望对你有帮助。

关于mysql - MySQL 中的添加和删除时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34764123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com