2010-08-17 3 views
2

Мне нужно выбрать из таблицы все строки, которые имеют date_added между CURDATE() и 6 неделей назад.SQL запрос периода времени

Помогите пожалуйста.

+1

Какой диалект SQL? –

+0

MySQL, чтобы использовать его с php – Gatman

+0

В будущем вы должны указать это в вопросе или заголовке (в дополнение к тегам). Так как разные диалекты SQL имеют различный синтаксис и функции. –

ответ

2
SELECT * 
FROM a_table 
WHERE date_added BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 WEEK) AND CURDATE() 
3
SELECT * 
FROM mytable 
WHERE date_added BETWEEN CURDATE() - INTERVAL 6 WEEK AND CURDATE() 
1
SELECT * FROM table_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_added) <= 42 
+0

Ха! 42 б/у * с * причина! –

+0

7 дней в неделю. 6 недель ... Функция TO_DAYS работает с днями. – pltvs

+0

+1 @ Александр: Он не спрашивал, как у вас есть 42, я думаю, он поклонник путеводителя автостопом по Галактике (не все мы: p). – wimvds

0

SELECT * FROM table_name WHERE DATEDIFF (NOW(), DATE_ADDED) < = 42

0

если вы используете даты в течение одного года

select date_format(date, '%u') from tab  
where (date_format(date, '%u')-date_format(now(), '%u'))>6 

если вы используете даты с разными годами

Вам не нужно использовать даты с другим годом. вы можете использовать

select 
date_format(date, '%u') from tab 
where (date_format(date, '%u')-date_format(now(), '%u'))>6 
and 
date_format(date, '%u') from tab 
where (date_format(date, '%Y')-date_format(now(), '%Y'))=0 

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

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