Учитывая 2 поля типа datetime в mySql, которые выглядят так: 2009-07-26 18:42:21
. После получения этих значений в PHP, как я могу сравнить 2 временных штампа, чтобы выяснить, сколько секунд прошло между ними? Я попробовал просто вычесть их, но это не сработало.
$ts1 = strtotime('2009-07-26 18:42:21'); $ts2 = strtotime('2009-07-26 18:42:20'); $elapsedSeconds = $ts1 - $ts2; // = 1
Попробуйте этот код PHP, чтобы сравнить даты;
<?php $date_difference_in_seconds = abs(strtotime($date_1) - strtotime($date_2)); ?>
Даты, которые хранятся в MySQL, находятся в другом формате, который использует PHP. PHP хранит даты в секундах, прошедших со времен Unix Epoch, о которых вы можете прочитать больше на http://en.wikipedia.org/wiki/Unix_time . Эта одна строка кода просто преобразует две даты в формат PHP и вычитает две даты друг от друга, прежде чем абсолютизировать значение, чтобы избежать отрицательных результатов.
Если вы не хотите использовать дату в формате, который MySQL возвращает вообще, но просто после их вычитания, вместо этого используйте прямой SQL-запрос, чтобы сохранить память:
SELECT TIME_TO_SEC(TIME_DIFF(date_1, date_2)) AS date_difference_in_seconds FROM table;
выберите их как временные метки unix и просто вычтите один из другого
SELECT UNIX_TIMESTAMP(field1) AS time1, UNIX_TIMESTAMP(field2) AS time2