Как выбрать записи из MySQL за сегодня по unixtime?

Как выбрать записи из MySQL за определенную дату, например, за сегодня?
В таблице имеется столбец uploads (имеет значения вида "1458472109" unixtime).

Пример запроса:
SELECT COUNT(id) FROM content WHERE uploads = '2016-04-24'
  • Вопрос задан
  • 1184 просмотра
Решения вопроса 1
Green_King
@Green_King Автор вопроса
SELECT COUNT(id) FROM content WHERE uid = '3' AND DATE_FORMAT( FROM_UNIXTIME( `uploads` ) ,  '%Y-%m-%d' ) =  '2016-04-24'
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
SELECT COUNT(id) FROM content WHERE uploads = FROM_UNIXTIME(<unix timestamp>, '%Y-%m-%d');


хотя в вашем случае правильнее было бы наверное так:

SELECT COUNT(id) FROM content WHERE uploads BETWEEN FROM_UNIXTIME(1458472109, '%Y-%m-%d') AND DATE_ADD(FROM_UNIXTIME(1458472109, '%Y-%m-%d'), INTERVAL 1 DAY);
Ответ написан
Комментировать
@Serj_By
Как я понимаю - основная проблема здесь в том, что у автора имеется Unix Time текущего момента. То есть, это не абстрактно говоря "20.07.2015 00:00", а грубо говоря "20.07.2015 15:12", а необходимо выбрать именно за сегодня. Тут еще большой вопрос к автору - что в проекте с таймзонами и обрабатываются ли они как-то? В общем случае будет выглядеть так:
SELECT COUNT(id) from content WHERE
uploads >= FROM_UNIXTIME(<unixtime here>, "%Y-%m-%d") and uploads < INTERVAL 1 DAY + FROM_UNIXTIME (<unixtime here>, "%Y-%m-%d");

Это если все-все-все (сервер, клиенты, данные в базе - в одной таймзоне), иначе нужно еще добавлять соответствующие разницы между таймзонами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы