如何更新另一个字段(整列)我MYSQL phpMyAdmin数据库中(TIME 00:00:00)格式的时间差异
<?php
$con=mysqli_connect("***","****","****","******");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"UPDATE members SET time_on = current_time-logon_time");
?>
当我在PHP中执行此操作时,我一直收到0:00:00并且没有结果。其他时候我们很好,只是试图获得差异并更新time_on列中的所有字段。
答案 0 :(得分:0)
您应该使用timediff()
mysqli_query($con,"UPDATE members SET time_on = timediff(current_time,logon_time)");
答案 1 :(得分:0)
您可以使用TIMESTAMPDIFF()来区分两个日期和/或日期时间。 试试这个:
UPDATE members
SET time_on = TIMESTAMPDIFF(SECOND, logon_time, current_time)
这将以秒为单位设置差异。
答案 2 :(得分:0)
只是为了扩展其他答案为什么是正确的:你正在做几次MATH,这不会像你期望的那样工作:
mysql> create table foo (x time, y time);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into foo (x, y) values ('14:15:16', '09:08:07');
Query OK, 1 row affected (0.00 sec)
mysql> select * from foo;
+----------+----------+
| x | y |
+----------+----------+
| 14:15:16 | 09:08:07 |
+----------+----------+
1 row in set (0.00 sec)
mysql> select x - y from foo;
+-------+
| x - y |
+-------+
| 50709 |
+-------+
1 row in set (0.00 sec)
注意结果是 NOT 时间值,它是一个整数。它恰好是05:07:09
的直接时间 - &gt;字符串 - &gt;数字转换,这是两个值的字面预期时间差。但是因为你正在做MATH,即减法,所以MySQL假设你想要一个数字答案,并把它交给你。
这就是为什么有timediff()
和类似的日期/时间函数,它们返回一个真实的日期/日期时间值,而不是这个不稳定/无用的整数。