PHP/MySQL пытается получить TIMESTAMPDIFF для вывода результата

Мое намерение с приведенным ниже кодом - отобразить разницу между двумя временными метками в секундах, но вообще ничего не отображается. Я добавил echo $ts, чтобы вы могли видеть, что содержит $ts:

$ts = $value['time'];
echo $ts;
$sql = "SELECT TIMESTAMPDIFF(SECOND,(CURRENT_TIMESTAMP),'$ts')";
$diff = mysql_query($sql);
echo $diff;

Результат:

2017-01-26 16:30:51

Следовательно, он показывает только содержимое $ts, а не разницу во времени. Помощь в понимании того, что я делаю неправильно, будет оценена по достоинству, спасибо!


person Corey Hart    schedule 30.01.2017    source источник


Ответы (2)


Использование только Php.

$datetime1 = strtotime($ts);
$datetime2 = strtotime(date('Y-m-d H:i:s'));
$interval  = abs($datetime2 - $datetime1);
echo 'Diff. in seconds is: '.$interval; 
person Star_Man    schedule 30.01.2017
comment
К сожалению, мне это нужно для работы с mySQL. Это потому, что я буду делать запрос, который выбирает только строки из таблицы, в которой временные метки имеют возраст ‹ x секунд. В противном случае я должен вытащить данные для каждой строки и сравнить их с помощью php, что было бы очень неэффективно. Я знаю, что это не очевидно из кода, который я разместил, но я хотел, чтобы мой вопрос был как можно более простым, зная, что как только я смогу получить результат с помощью TIMESTAMPDIFF, я также смогу продолжить с запрос. - person Corey Hart; 30.01.2017

Функция mysql_query() возвращает:

  1. Для операторов SELECT, SHOW, DESCRIBE, EXPLAIN и других, возвращающих набор результатов, mysql_query() возвращает ресурс в случае успеха или FALSE в случае ошибки.

  2. Для других типов операторов SQL, INSERT, UPDATE, DELETE, DROP и т. д., mysql_query() возвращает TRUE в случае успеха или FALSE в случае ошибки.

  3. Возвращенный ресурс результата должен быть передан mysql_fetch_array() и другим функциям для работы с таблицами результатов, чтобы получить доступ к возвращенным данным.

Итак, вы можете попробовать следующее:

$con = mysql_connect("localhost", "root", "mypass") or
    die("Could not connect: " . mysql_error());
mysql_select_db("tutorials");//**your database name**//

$sql = "SELECT TIMESTAMPDIFF(SECOND,(CURRENT_TIMESTAMP),'$ts') as timestamp";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("diff: %s", $row[0]);  
}

mysql_close($con);
person Star_Man    schedule 30.01.2017
comment
@CoreyHart, результат $ FALSE? - person Star_Man; 30.01.2017
comment
Нет, просто ничего не печатается. - person Corey Hart; 30.01.2017
comment
Все такой же. - person Corey Hart; 30.01.2017