выбрать строки из прошлого месяца, используя Unix - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь выбрать все строки из таблицы за последний месяц, в основном, как этот парень спрашивает: MySQL выбирает все строки с прошлого месяца до (сейчас () - 1 месяц), для сравнительных целей

Но я использую тайм-ампер unix в столбце даты, поэтому дата выглядит следующим образом: 1538330400

Поэтому я начал использовать (выберите строки с датой, равной или более ранней, чем сегодня):

SELECT * FROM ns_trainingame t WHERE t.date <= UNIX_TIMESTAMP(NOW());

Работало просто отлично.

Затем, после некоторого исследования, я обнаружил, что некоторые люди используют несколько кодов для НЕ UNIX TIMESTAMPS и пытались адаптировать его для решения моей проблемы.

SELECT * 
FROM ns_trainingame t 
WHERE t.date >= UNIX_TIMESTAMP(DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY)) 
  AND t.date <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))");

Но дает мне неправильное числостроки в этих условиях.

Что я могу сделать?

1 Ответ

0 голосов
/ 01 октября 2018

Если вы пытаетесь получить все результаты за последний месяц (по состоянию на 30 августа - 30 сентября), это, вероятно, самый простой способ.Используйте FROM_UNIXTIME, чтобы преобразовать вашу метку времени в дату, а затем сравнить ее непосредственно с другими датами:

SELECT * 
FROM ns_trainingame t 
WHERE FROM_UNIXTIME(t.date) BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()
...