2016-10-25 4 views
1

У меня проблема с max (date) в SQL. В основном проблема заключается в том, что я должен проверить, не указана ли последняя дата, введенная идентификатором, более 1 дня, а затем вернуть эту дату.Проблема, связанная с датой SQL max

id| user_id|   send_date 
    8 |  90 | 2016-10-21 14:31:14 
| 10 |  90 | 2016-10-25 09:56:28 
| 11 |  18 | 2016-10-22 09:56:28 
| 12 |  19 | 2016-10-21 09:56:28 
| 13 |  19 | 2016-10-23 09:56:28 
| 13 |  20 | 2016-10-25 09:56:28 

Это часть гораздо более SQL (только ту часть, которая у меня есть проблема с):

SELECT max(h.send_date) as lastSent 
FROM history h 
WHERE (h.send_date < NOW() - INTERVAL 1 DAY); 

Теперь то, что происходит в том, что вместо того, чтобы выбрать строки, где последний введенную дату старше 1 день, я получаю последний, который старше 1 дня, даже если в таблице есть более новая запись.

Кто-нибудь есть идеи, как изменить его так, что SQL будет возвращать только последнюю дату, когда он подрастет, что 24h и новейших (пользователь) в таблице (в примере, он бы не вернуть ничего потому что есть запись менее 24-х лет)?

Немного изменил пример таблицы. Это то, что мне нужно, чтобы получить в результате (user_ids 90 и 20 прибудете игнорируется из-за 2016-10-25 9:56:28):

18 | 2016-10-22 09:56:28 
    19 | 2016-10-23 09:56:28 
+0

Какой тип dbms вы используете? (now() является функцией, специфичной для продукта.) – jarlh

+0

Я использую MySQL – Rauno

+0

Непонятно мне, что вы ищете. Можете ли вы представить более подробный пример ожидаемых данных и результатов? –

ответ

3

для функции агрегации следует использовать имеющие и не там, где

SELECT max(h.send_date) as lastSent 
FROM history h 
having max(h.send_date) < DATE_SUB(NOW() ,INTERVAL 1 DAY) ; 
+0

нет необходимости иметь предложение здесь, где предложение будет работать, если вы хотите выбрать max (h.send_date) –

+0

Спасибо, это именно то, что я искал! – Rauno

+1

@RanjitSingh, если OP требуется значение max (max (h.send_date) для проверки, он должен использовать предложение о наличии .. и в mysql он не может использовать псевдоним при наличии .. – scaisEdge