Подтвердить что ты не робот

SQL Получить все записи старше 30 дней

Теперь я нашел много похожих вопросов SO, включая старый, но то, что я пытаюсь сделать, - это получить запись старше 30 дней, но мое поле таблицы - unix_timestamp. Все остальные примеры, похоже, используют поля DateTime или что-то еще. Пробовал некоторых и не мог заставить их работать.

Это определенно не работает ниже. Кроме того, мне не нужна дата между датой, я хочу, чтобы все записи через 30 дней были отмечены временной отметкой unix, хранящейся в базе данных. Я пытаюсь обрезать неактивных пользователей.

простые примеры.. не работает.

SELECT * from profiles WHERE last_login < UNIX_TIMESTAMP(NOW(), INTERVAL 30 DAY)  

И попробовал это

SELECT * from profiles WHERE UNIX_TIMESTAMP(last_login - INTERVAL 30 DAY) 

Не слишком сильный при сложных запросах даты. Любая помощь ценится.

Хотя вопрос был принят. Мне не нравится запускать счастливых людей, закрывая вопрос как дубликат. Это ЧИСТЫЙ НЕ дубликат, потому что я не спрашивал, что является альтернативой функции mysql. Я спросил ТОЧНО, как получить записи старше 30 дней, и этот дублирующий вопрос не отвечает или даже покажет мне, как его получить. Я думаю, людям нужно читать вопросы.

4b9b3361

Ответ 1

Попробуйте что-нибудь вроде:

SELECT * from profiles WHERE to_timestamp(last_login) < NOW() - INTERVAL '30 days' 

Цитата из руководства:

Также доступна функция с одним аргументом to_timestamp; он принимает аргумент двойной точности и преобразует из эпохи Unix (секунды с 1970-01-01 00: 00: 00 + 00) в метку времени с часовым поясом. (Целочисленные Unix-эпохи неявно применяются для двойной точности).

Ответ 2

Если я что-то пропустил, это должно быть довольно легко:

SELECT * FROM profiles WHERE last_login < NOW() - INTERVAL '30 days';