У меня проблема с 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
Какой тип dbms вы используете? (now() является функцией, специфичной для продукта.) – jarlh
Я использую MySQL – Rauno
Непонятно мне, что вы ищете. Можете ли вы представить более подробный пример ожидаемых данных и результатов? –