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

Résolu
CorentinRoche Messages postés 271 Date d'inscription   Statut Membre Dernière intervention   -  
CorentinRoche Messages postés 271 Date d'inscription   Statut Membre Dernière intervention   -
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 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 27106 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > blux Messages postés 27106 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Membre Dernière intervention   40
 
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