Найти записи с полем времени за последние 24 часа - PullRequest
1 голос
/ 31 марта 2012

В моем запросе SQL, как мне найти записи за последние 24 часа? Я использую функцию time () для вставки в БД. Я использую метку времени, время хранится в этом формате. Например, 1332673046

Ответы [ 5 ]

1 голос
/ 31 марта 2012

Простая арифметика DATE сделает,

SELECT * 
FROM   `table1` 
WHERE  `time_col` BETWEEN NOW() AND NOW()- INTERVAL 24 HOURS; 
1 голос
/ 31 марта 2012
select somefield from yourtable where timefield >= subtime(current_timestamp(), '1 00:00:00');
1 голос
/ 31 марта 2012

Я не уверен, хотите ли вы проверить в тот же календарный день или, как вы говорите, в течение последних 24 часов, поэтому вот что я обычно делаю для обоих случаев:

а) Для того же календарного дня:

CONVERT(VARCHAR(8), myTable.myDate, 112) = CONVERT(VARCHAR(8), GETDATE(), 112)

б) Для даты, которая должна быть в течение последних 24 часов (включительно)

DATEDIFF(hour, myTable.myDate, GETDATE()) <= 24
1 голос
/ 31 марта 2012

Вы можете использовать BETWEEN

SELECT * FROM users 
WHERE created_at  BETWEEN '2012-03-31 00:00:00 UTC' AND '2012-03-31 23:59:59 UTC'
0 голосов
/ 31 марта 2012

Учитывая, что вы храните даты как метки времени Unix, вам нужно UNIX_TIMESTAMP как это

SELECT
  // fields you need
FROM `table`
WHERE
  `date_field` BETWEEN UNIX_TIMESTAMP( DATE_SUB(NOW() INTERVAL 24 HOUR) ) AND UNIX_TIMESTAMP()

Возможно, вы захотите сохранить даты в формате MySQL DATETIME , поскольку это значительно упрощает вычисления дат в MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...