2010-08-17 6 views
2

Je dois sélectionner dans une table toutes les lignes dont date_added entre CURDATE() et il y a 6 semaines.Requête de période de temps SQL

Aide s'il vous plaît.

+1

Quel dialecte de SQL? –

+0

MySQL, pour l'utiliser avec php – Gatman

+0

Dans le futur, vous devez spécifier cela dans la question ou le titre (en plus des balises). Puisque les différents dialectes de SQL ont la syntaxe et les fonctions variables. –

Répondre

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

Ha! 42 utilisé * avec * raison! –

+0

7 jours par semaine. 6 semaines ... Fonction TO_DAYS travailler avec des jours. – pltvs

+0

+1 @Alexander: Il ne vous demandait pas comment vous aviez obtenu le 42, je suppose qu'il est un fan du Guide de la galaxie de Hitchhiker (ne sommes-nous pas tous: p). – wimvds

0

SELECT * FROM nom_table where DATEDIFF (NOW(), DATE_ADDED) < = 42

0

si vous utilisez les dates en un an

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

si vous utilisez des dates d'années différentes

vous n'avez pas besoin d'utiliser des dates avec une autre année. vous pouvez utiliser

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 

vous pouvez optimiser requête avec JOIN si vous voulez. Je pense que vous savez comment le faire

Questions connexes