Requête SQL, récupérer données en fonction d'un champs date

Résolu/Fermé
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 - Modifié le 1 avril 2022 à 22:12
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 - 2 avril 2022 à 20:40
Bonjour / bonsoir

Depuis un moment j'essaye de récupérer certaines données d'une BBD en fonction de la date choisie.
Dans ma structure de la table, j'ai un champ nommé "dat_e" sous la forme JJ-MM-AA (1-04-2022 par exemple).


J'aimerais faire une requête qui compte, les lignes contenues dans la table qui finissent par 2022 ET qui est au mois d'avril donc "04"


ICI il devrais donc me sortir 2. Uniquement deux lignes contienne 04-2022

Je sais qu'on peut faire des LIKE dans une requête SQL mais là je bloque ...


Donc, avoir une requête qui compte le nombre de lignes qui contient "X-04-2022" par exemple.

A savoir que "04" est "2022" sont deux variables qui peuvent changer. (Mais pour ça je m'en sortirais).


Merci d'avance pour toute lumières .


Configuration: Windows / Opera 84.0.4316.42


A voir également:

2 réponses

blux Messages postés 26030 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 10 mai 2024 3 289
Modifié le 1 avril 2022 à 22:25
Salut,

quel SGBD ? Qu'est-ce qui coince ?

Parce qu'on peut avoir plein de solutions, si ton champ est de type date, tu peux tester where mois(dat_e) = "04" and annee(dat_e) = "2022".

On peut aussi construire une regex...

0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 666
Modifié le 1 avril 2022 à 23:03
Bonjour,

Il faudrait nous indiquer quel moteur de bdd tu utilises ... mais si tu as une date au format "français" .. c'est soit ACCESS ... soit que tu n'as pas utilisé le bon "type" pour ta colonne de date...
Sur la plupart des BDD.. un champ "date" .. est au format YYYY-mm-dd ou en timestamp
Et donc, si ton champ est bien de type date ( ce qui ne semble pas être le cas actuellement.. puisqu'il semblerait que tu sois en mysql et que ta capture écran soit faite sur phpmyadmin ), les SGBD ont en général des fonctions de manipulation de dates ...
Par exemple, en SQL, tu as les fonctions MONTH() ou YEAR() ... voir même DATE_FORMAT ...
Donc modifie le "type" pour ta colonne DATE ...
Ensuite tu pourras faire un truc du genre
WHERE  YEAR(date_e) = 2022 AND MONTH(date_e) = 4

ou encore
WHERE  DATE_FORMAT(date_e,'%Y-%m') = '2022-04'



0
blux Messages postés 26030 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 10 mai 2024 3 289
1 avril 2022 à 23:06
J'ai peur que ce soit un simple champ texte, le jour n'est pas complet, il est sur 1 seul car pour le 1er du mois...
0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 666 > blux Messages postés 26030 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 10 mai 2024
1 avril 2022 à 23:09
Faut pas en avoir peur .. c'est même sûr .... (et il est sur mysql.. c'est certain )

En plus, ça fait plusieurs fois qu'il pose des questions de requêtes sql .. dans le forum PHP .. alors que je lui ai déjà expliqué qu'il fallait les poster dans le forum BASE DE DONNEES
0
CorentinRoche Messages postés 271 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 12 juin 2023 39
Modifié le 2 avril 2022 à 20:42
Bonjour,

Merci des retours.

Je vais prendre les choses dans l'ordre :

Le site tourne sur MySQL. connexion en PDO.

Pour ce qui est de ma colonne dat_e. Effectivement elle n'est pas en format "date".
A l'époque ou j'avais fait ça j'envoyer la variable $date_de_creation.
$date_de_creation = date('j-m-Y');
.

Je vais donc changer le type de la colonne par un format date. Puis passer ma variable en :
$date_de_creation = date('Y-m-j');
.
Si j'ai compris l'ordre. Ma base de données ne devrais pas me la refuser.

Derrière je pourrais donc les gérer plus facilement avec les deux requêtes :
WHERE  YEAR(date_e) = 2022 AND MONTH(date_e) = 4

ou
WHERE  DATE_FORMAT(date_e,'%Y-%m') = '2022-04'


Et par la suite modifier pour ajouter mes variables. Car c'est requête peuvent changer en fonction de la demande de l'user.

$sql = 'WHERE  YEAR(date_e) = '. $year .' AND MONTH(date_e) = '. $mouth .'' ;



Pour ce qui est du "ça fait plusieurs fois qu'il pose des questions de requêtes sql".
Désoler de poser des questions trop souvent dans le mauvais forum ........... Mon dernier poste date de janvier 2020. Sur le quel effectivement tu me le rappel ! Je ferais donc attention lors de mon prochain post en 2024/25.
Amicalement, ;)

Merci de vos réponse.

Cordialement,
Corentin
0