Как сравнить прошедшее время между полями datetime?

Учитывая 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