时间差MYSQL PHP

时间:2014-09-11 01:55:33

标签: php mysql

如何更新另一个字段(整列)我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列中的所有字段。

3 个答案:

答案 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()和类似的日期/时间函数,它们返回一个真实的日期/日期时间值,而不是这个不稳定/无用的整数。