2014-09-11 3 views
0

Как я могу получить обновление еще одно поле (весь столбец) разность времени в формате (TIME 00:00:00) в моей базе данных MYSQL PHPMYADMINразница времени MYSQL PHP

<?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"); 
?> 

я получаю 0 : 00: 00 и никаких результатов, когда я делаю это на PHP. В других случаях наш штраф, просто пытается получить разницу и обновить все поля в столбце time_on.

+0

Здесь вы можете найти ответ на свой вопрос, он решен в php http://stackoverflow.com/questions/13928021/getting-time-difference-between-two-times-in-php – Bira

ответ

0

Вы должны использовать timediff()

mysqli_query($con,"UPDATE members SET time_on = timediff(current_time,logon_time)"); 
+0

благодарит человека, что хорошо поработал – user2498276

0

Вы можете использовать TIMESTAMPDIFF(), чтобы получить разницу между двумя датами и/или DateTimes. Попробуйте это:

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

Это позволит установить разницу в секундах.

0

Просто расширить, почему другие ответы правы: Вы делаете МАТЕМАТИКА по времени, который не работает, как вы ожидаете:

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, которое представляет собой прямую переменную time-> string-> numeric, которая представляет собой буквальную ожидаемую разницу во времени двух значений. Но поскольку вы выполняете MATH, то есть вычитание, MySQL предполагает, что вам нужен цифровой запрос и дающий его вам.

Именно поэтому есть timediff() и аналогичные функции даты/времени, которые возвращают настоящее значение даты/времени, а не это неуловимое/бесполезное целое число.

Смежные вопросы