Page 1 sur 1
SELECT avec com paramètre un début d'expression
Posté : 08 sept. 2005, 17:39
par Haze85
Bonjour,
Je souhaiterai savoir si il est possible de faire une requète select en plaçant comme paramètre WHERE un début d'expression.
Par exemple. Je stoque mes dates au format américain dans une base de données (format AAAAMMJJ) et je souhaite faire une recherche de toutes les informations stoquées au mois de septembre 2005 (200509 au format américain). Cela est il possible sans placer dans le WHERE des AND, comme par exemple 'WHERE Date>20050900 AND Date<20050931 (compris entre le premier et le dernier jour) ?
Merci d'avance pour votre aide.
Cordialement,
Thomas
Posté : 08 sept. 2005, 18:58
par ouckileou
il y a plusieurs manières de le faire, mais quel est le type du champ dans lequel tu stockes la date ?
si c'est bien un type DATE, tu peux effectivement utiliser des bornes, ce n'est pas gênant :
Code : Tout sélectionner
SELECT * FROM table WHERE champ_date BETWEEN 2005-09-01 AND 2005-09-30;
ou tu peux faire comme ceci :
Code : Tout sélectionner
SELECT * FROM table WHERE YEAR(champ_date) = 2005 AND MONTH(champ_date) = 9;
si tu as utilisé un champ genre VARCHAR (ce qui n'est pas terrible), tu peux faire comme ça :
Merci
Posté : 08 sept. 2005, 20:00
par Haze85
J'utilisais un VARCHAR. Merci pour ton aide
Posté : 08 sept. 2005, 20:06
par ouckileou
à ta place j'envisagerais de passer à un champ DATE ?
pour stocker une date dans une champ "chaine de caractères" ? il n'y aucune raison valable à ça, et tu vas peut-être te compliquer la vie pour plus tard

OK
Posté : 08 sept. 2005, 20:27
par Invité

Je vais les passer en champ DATE. Y a t'il des conséquence sur le format de la date? (américain ou français)
Est ce qu'il est possible de faire un GROUP BY de tout les champs ayant le même mois mais pas forcément la même année ou le même jour?
Merci pour ton aide
Re: OK
Posté : 08 sept. 2005, 20:51
par ouckileou
le format des dates dans une base de données est toujours (à ma connaissance) celui-ci : AAAA-MM-JJ
ceci pour faciliter le tri
tu as donc tout intérêt à passer tes champs en DATE, ça prendra 3 fois moins de place et tu récupèreras toutes les fonctions associées
et tu pourras donc facilement faire le GROUP BY dont tu parles, ce qui aurait été nettement moins simple avec un VARCHAR

Toujours moi
Posté : 08 sept. 2005, 20:54
par Haze85
je stoque désormais mes données date ds le format DATE. Cependant je ne connais pas la manière de faire des GROUP BY avec un élément de la date (année, mis ou jour). Cela serait-il différent si je le fesais avec un DISTINCT?
Merci d'avance.
Cordialement,
Thomas
Posté : 08 sept. 2005, 20:58
par ouckileou
tu as une fonction qui permet de récupérer seulement le mois : MONTH()
donc tu devrais pouvoir faire ceci :
jette un coup d'oeil dans la doc MySQL, sur le chapitre des fonctions de dates et d'heures, il y en a tout un tas très pratiques