Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 时间差_Php_Mysql - Fatal编程技术网

Php 时间差

Php 时间差,php,mysql,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(); } 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列中的所有字段。

您应该使用
timediff()

您可以使用获取两个日期和/或日期时间之间的差异。 试试这个:

UPDATE members
SET time_on = TIMESTAMPDIFF(SECOND, logon_time, current_time)

这将以秒为单位设置差异。

只是为了进一步说明为什么其他答案是正确的:你在按时做数学,这并不像你预期的那样有效:

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)
注意结果是如何而不是时间值,它是一个整数。它恰好是
05:07:09
的直接时间->字符串->数字转换,这是两个值的预期时间差。但是因为你在做数学,比如减法,MySQL假设你想要一个数字答案,然后给你


这就是为什么有
timediff()
和类似的日期/时间函数,它们返回一个真实的日期/日期时间值,而不是这个不可靠/无用的整数。

您可以在这里找到问题的答案,它是用php解决的
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)