Sql, чтобы получить все записи со вчерашнего хода - PullRequest
1 голос
/ 03 апреля 2012

Мне нужно условие SQL для получения строк из таблицы, которые были созданы между 6:00 утра вчера и 7:00 утра сегодня.В таблице есть поле creationDate.

Это подход, о котором я думал

select *
from myTable   
where creationDate = DATE_SUB(CONCAT(CURDATE()), INTERVAL 1 DAY)

Я использую MySQL-сервер 5. Также мое время не в поле creationDate,он находится в отдельном поле с именем startTime.

Ответы [ 3 ]

5 голосов
/ 03 апреля 2012

Протестировано и работает (предполагается, что ваш столбец creationDate имеет тип timestamp):

select * from mytable
where
creationDate between concat(date(date_sub(now(), interval 1 day)), ' 06:00:00') and concat(date(now()), ' 07:00:00')

Запишите пробел перед значением времени, то есть '06: 00: 00'

РЕДАКТИРОВАТЬ причину дальнейшего уточнения в комментарии:

SELECT * FROM mytable
WHERE
(creationDate >= date(date_sub(now(), interval 1 day)) AND creationTime >= '06:00:00')
AND
(creationDate <= date(now()) AND creationTime <= '07:00:00')

Да, это должно быть неуклюже, потому что если вы просто напишите что-то вроде (псевдокод)

...WHERE creationDate between today and yesterday AND creationTime between '06:00:00' and '07:00:00'

вы получите интервал в 1 час на сегодня и вчера.

0 голосов
/ 03 апреля 2012

Попробуйте этот запрос

select *
from myTable   
where creationDate >= 
DATE_SUB(concat(DATE_FORMAT(NOW(), %Y-%m-%d), ' 07:00:00'), INTERVAL 25 HOUR)
AND
creationDate <= concat(DATE_FORMAT(NOW(), %Y-%m-%d), ' 07:00:00')
0 голосов
/ 03 апреля 2012

попробуйте сделать это:

select *
from myTable   
where creationDate > DATE_SUB(CURDATE(), INTERVAL 25 HOUR);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...