2016-01-29 2 views
0

У меня есть таблица, которая имеет следующие столбцы -Вычислить дату различий в SQL

Id end_time status 12 1407477033 success 13 1407479820 error 14 1407479974 error

я должен найти все идентификаторы, которые имеют статус «ошибка» и были завершены в течение последних 15 минут. Я использую ruby ​​для взаимодействия с базой данных, поэтому мой запрос становится (имя таблицы - q_lists). Для того, чтобы найти разницу во времени, я использую DATEDIFF -

date = QList.find_by_sql("select end_time from q_lists where id = #{a.id}") 
diff = QList.find_by_sql("select DATEDIFF(minute, FROM_UNIXTIME(date), CURRENT_TIMESTAMP") 

Примечание: а это переменная цикла, я итерация для каждой строки. Я получаю следующее сообщение об ошибке -

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DATEDIFF' 

Как я могу решить эту проблему. Также я могу написать запрос таким образом, что все идентификаторы хранятся в массиве, используя только один оператор sql (без итераций цикла).

EDIT TIMESTAMPDIFF решает проблему. Извините за то, что вы скрепили два вопроса в одном, но кто-то может указать правильный способ получить все id за один раз без использования циклов.

+0

где вы используете эту строку в C#? выберите DATEDIFF (минута, FROM_UNIXTIME (дата), CURRENT_TIMESTAMP) –

ответ

0

MySQL DATEDIFIF не совпадает с Microsoft. Он не включает первый параметр и возвращает число дней между двумя датами. Вы хотите TIMESTAMPDIFF

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