[SQL] Date divisées ern 3 champ à comparer

Moriar -  
 Moriar -
Bonjour !

Je cherche de l'aide pour un probleme assez épineux.

Je dois traiter les données d'une base MySQL qui contient entre autre des dates.
Ces dates sont au format JJ/MM/AA mais les jours les mois et les années sont tous dans des champs différents (je me retrouve donc avec une date stoquée en 3 nombres dans des champs distincts).

J'ai eu beau me pêter la tête dessus je n'ai pas trouvé le moyen de rassembler ces 3 champs au format date pour les comparer à une date fournie par l'utilisateur (tout ça en une requete SQL bien sur).

Bien sur j'ai déjà trouvé un moyen de traiter ça aprés la requete via PHP mais cette solution est assez lourde et ne sera peut être plus utilisable quand il me faudra étendre mon outil.

Merci d'avance pour vôtre aide.
A voir également:

4 réponses

A.Nonymous
 
SELECT * FROM table WHERE NOW() > CONCAT(table.annee,'-',table.mois,'-',table.jour);
0
Moriar
 
En fait je reçois les dates à comparée à celle de la BDD via un formulaire.

Mais si je fais SELECT *
FROM TABLE
WHERE CONCAT('$annee','-','$mois','-','$jour') > CONCAT(table.annee,'-',table.mois,'-',table.jour)

Ca passerait comparerait ces deux concaténation comme étant des dates ?
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Non, effectivement dans ces conditions il faut obligatoirement caster.
Mais là, la syntaxe dépend pas mal de ton sgbd...
Sur du sql server, voilà la façon de procéder : https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15
Sur du mysql, CAST(CONCAT(...) AS DATETIME) devrait convenir.
0
Moriar
 
J'ai essayé ça n'a pas l'air de fonctionner ....

C'est assez problematique, vu que je viens de me rendre compte que le systeme que j'avais mis en place via php fait la différence entre 7 et 07.
0
Moriar
 
J'ai un peut avancé de mon côté et même si ça ne se fait pas dans la requete SQL le traitement est correct (et me convient).

Merci quand même pour votre précieuse aise.
0