2011-03-22 2 views
2

Я бы хотел, чтобы строки были введены только за последний 1 день.Вернуть строки между двумя датами в MySQL

У меня есть столбец даты, в котором хранятся YYYY-MM-DD, и я разрешаю пользователю отправлять дату, которую они хотят посмотреть в этом формате yyymmdd Как я могу использовать эти данные, чтобы ограничить его только в предыдущий день?

Я бы предположил, что это как-то связано с ключевым словом BETWEEN, но я не могу понять это.

+0

предыдущий день = вчера или ('yyyymmdd' - один день)? – jgauffin

ответ

5

Этот запрос:

SELECT * 
FROM mytable 
WHERE mydate >= STR_TO_DATE('110321', '%y%m%d') - INTERVAL 1 DAY 
     AND mydate < STR_TO_DATE('110321', '%y%m%d') 

возвращает все записи для Mar 20, 2011

+0

это работает для меня, если я использовал строку '110321', но это не так, если я использую «STR_TO_DATE ('$ testDate', '% y% m% d')" это не $ testDate = $ _POST [' Дата']; $ testDate = (строка) $ testDate); Формат $ testDate = YYYYMMDD – nhunston

+0

@Herly: используйте '% Y% m% d' (обратите внимание на верхний регистр' Y') для четырехзначных лет. – Quassnoi

+0

Nevermind it WAS, потому что я использовал YYYMMDD вместо YYMMDD. Спасибо за вашу помощь. – nhunston

4
SELECT * from TABLE_NAME WHERE ROW_DATE BETWEEN '2011-03-20' AND '2011-03-21' 
+0

Это вернет записи для '2011-03-21 00: 00: 00'. – Quassnoi

0

Из инструкции MySQL (here):

 
SELECT something FROM tbl_name WHERE DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= date_col; 
0
SELECT * FROM YourTable WHERE date_column = DATE_ADD(CURDATE(), INTERVAL -1 DAY) 

Это возвращает все строки для в день и вчера.

Смежные вопросы