Recherche par date

ciboubou15000
Invité n'ayant pas de compte PHPfrance

03 juin 2012, 23:12

Bonjour
J'aimerai faire une recherche par date, alors j'ai un champ date_expir.

Nous somme le 2012-06-01 j'aimerai faire une requete qui me donne tous les resultats qui son egal a +15jours (donc qui on date_expir=2012-06-15)

Code : Tout sélectionner

SELECT date_expir,title,content,DATE_ADD(CURDATE(), INTERVAL 15 DAY) as searchdate FROM blog WHERE date_expir = DATE_SUB(CURDATE(), INTERVAL 15 DAY)
ceci ne marche pas :( , une petite idée? quand on parle de date_add & date_sub, c'est dans les SELECT tout le temps quand je fais des recherche sur internet , et jamais sur des wheres

ViPHP
ViPHP | 2577 Messages

04 juin 2012, 09:25

Commence par faire via phpmyadmin un :
SELECT date_expir, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 15 DAY) as searchdate, DATEDIFF(date_expir,CURDATE()) as delai  FROM blog 
pour voir le résultat et vérifier si des enregistrements correspondent.

Tu peux affiner la visualisation avec "WHERE delai BETWEEN 14 AND 16".

Ensuite tu pourras ajouter une clause WHERE genre "WHERE date_expir = searchdate" ou "WHERE delai = 15" si le résultat te convient.

ciboubou15000
Invité n'ayant pas de compte PHPfrance

04 juin 2012, 16:17

Si je fais un

Code : Tout sélectionner

SELECT date_expir, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 15 DAY) AS searchdate, DATEDIFF(date_expir,CURDATE()) AS delai FROM hosting WHERE delai = 15
je tombe sur une erreur de type :

Code : Tout sélectionner

Unknown column 'delai' in 'where clause'
Vu que je n'ai pas de champ delai

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

04 juin 2012, 16:54

Remplace ton WHERE par un HAVING

ViPHP
ViPHP | 2577 Messages

05 juin 2012, 09:03

Il me semblait que "having" servait avec la clause "group by".

Autrement, est ce que le select marche sans la clause where ? Et est ce que delai est bien calculé ?
Si c'est le cas, met la formule de calcul dans la clause where :
SELECT date_expir, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 15 DAY) AS searchdate, DATEDIFF(date_expir,CURDATE()) AS delai  FROM hosting WHERE DATEDIFF(date_expir,CURDATE()) = 15