Mysql sql中的时差。午夜总时间
这里真的需要帮助 具有具有以下列的表 startdate, stopdate, starttime, stoptime, totaltime startdate、stopdate、starttime、stoptime、totaltime 它们的格式为Mysql sql中的时差。午夜总时间,mysql,sql,datetime,Mysql,Sql,Datetime,这里真的需要帮助 具有具有以下列的表 startdate, stopdate, starttime, stoptime, totaltime startdate、stopdate、starttime、stoptime、totaltime 它们的格式为YYYY-MM-DD和HH-MM 如何获得HH-MM格式的totaltime(有时开始和停止时间超过午夜) 谢谢使用TIMEDIFF将以00:00:00.00000//此格式返回 TIMEDIFF('2013-11-20 12:01:00', '20
YYYY-MM-DD
和HH-MM
如何获得HH-MM
格式的totaltime
(有时开始和停止时间超过午夜)
谢谢使用TIMEDIFF将以00:00:00.00000//此格式返回
TIMEDIFF('2013-11-20 12:01:00', '2010-11-19 12:00:00')
或者你可以隐蔽到sec
TIME_TO_SEC(TIMEDIFF('2013-11-20 12:01:00', '2010-11-19 12:00:00'))
这样试试看
更新表1
设置totaltime=TIMEDIFF(ADDTIME(停止日期,停止时间),
ADDTIME(startdate,starttime));
这里是演示
更新:下面是一个午夜时间的示例
mysql> CREATE TABLE Table2
-> (`startdate` date,
-> `stopdate` date,
-> `starttime` time,
-> `stoptime` time,
-> `totaltime` time);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO Table2 VALUES
-> ('2013-11-27', '2013-11-28', '11:00', '00:00', NULL),
-> ('2013-11-27', '2013-11-28', '00:00', '15:00', NULL),
-> ('2013-11-27', '2013-11-28', '00:00', '00:00', NULL);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> UPDATE table2
-> SET totaltime = TIMEDIFF(ADDTIME(stopdate, stoptime),
-> ADDTIME(startdate, starttime));
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> SELECT * FROM table2;
+------------+------------+-----------+----------+-----------+
| startdate | stopdate | starttime | stoptime | totaltime |
+------------+------------+-----------+----------+-----------+
| 2013-11-27 | 2013-11-28 | 11:00:00 | 00:00:00 | 13:00:00 |
| 2013-11-27 | 2013-11-28 | 00:00:00 | 15:00:00 | 39:00:00 |
| 2013-11-27 | 2013-11-28 | 00:00:00 | 00:00:00 | 24:00:00 |
+------------+------------+-----------+----------+-----------+
3 rows in set (0.00 sec)
mysql>创建表表2
->(`startdate`日期,
->`stopdate`日期,
->‘开始时间’,
->“停止时间”时间,
->`总时间'时间);
查询正常,0行受影响(0.02秒)
mysql>插入到表2中的值
->('2013-11-27','2013-11-28','11:00','00:00',空),
->('2013-11-27','2013-11-28','00:00','15:00',空),
->('2013-11-27','2013-11-28','00:00','00:00',空);
查询正常,3行受影响(0.01秒)
记录:3个重复:0警告:0
mysql>更新表2
->设置totaltime=TIMEDIFF(ADDTIME(停止日期,停止时间),
->ADDTIME(startdate,starttime));
查询正常,3行受影响(0.01秒)
匹配的行:3个已更改:3个警告:0
mysql>从表2中选择*;
+------------+------------+-----------+----------+-----------+
|开始日期|停止日期|开始时间|停止时间|总时间|
+------------+------------+-----------+----------+-----------+
| 2013-11-27 | 2013-11-28 | 11:00:00 | 00:00:00 | 13:00:00 |
| 2013-11-27 | 2013-11-28 | 00:00:00 | 15:00:00 | 39:00:00 |
| 2013-11-27 | 2013-11-28 | 00:00:00 | 00:00:00 | 24:00:00 |
+------------+------------+-----------+----------+-----------+
一组3行(0.00秒)
这个更新对我来说效果很好,但如果过了午夜,我会得到否定的结果total@user3048250使用
timediff(晚一点的日期时间,前一点的日期时间)
可以得到肯定的结果。奇怪的事情发生了,当超过00.00时,它会从开始时间减去停止时间,并将其设为否定。@user3048250查询本身是完全正确的。负值表示停止日期时间<开始日期时间。请参阅更新的答案,例如,所有可能的午夜时间值组合。再说一次,它工作得很好。谢谢你的帮助。在我的表格中输入了错误的类型:P现在工作正常了。再次向你们所有人开火。