Requete SQL : Suis je nulle ??? - SQL/NoSQL - Programmation
Marsh Posté le 21-07-2003 à 19:21:20
c'est pas hyper simple comme requête.
Le plus simple est de ramener les dates de naissance à une année commune, puis les comparer.
Pour ce faire, tu auras besoin des fonctions month() day() et cdate(), je te laisse faire la requête elle-même, parceque ça ressemble plus à un sujet de TP ou autre qu'à autrechose.
PS: pense à utiliser une année bisextile pour l'année commune, sinon tu cours au plantage
Marsh Posté le 21-07-2003 à 19:27:41
Stéphanie : prend un autre pseudo que le mien pour poser des questions comme ça ! Les boules !
Marsh Posté le 21-07-2003 à 19:34:28
bon, ben oui, désolé chocoboy ... mais là, j'en avais tellement marre
euh, oui, c effectivement un tp, mais c la 28ème requete, et y a pleinns de trucs bizarre ki fonctionnent pas. Je connaissais pas cdate ... peut etre que ça va m'aider.
merci en tout cas
Marsh Posté le 21-07-2003 à 19:38:41
chocoboy a écrit : Stéphanie : prend un autre pseudo que le mien pour poser des questions comme ça ! Les boules ! |
Rhô la vieille feinte pour pas se faire TT
J'espère qu'avec les infos que je t'ai donné tu pourras résoudre ton problème. A priori, ça devrait aller tout seul, suffit de bien comprendre la bidouille que je proposé
Marsh Posté le 21-07-2003 à 19:42:11
Le plus simple eut été de stocker les dates avec un type TIMESTAMP. Les opérations avec > et < marcheront alors toutes seules.
Marsh Posté le 21-07-2003 à 19:42:35
MagicBuzz a écrit : |
ouinnnnnn c pas une feinte... c pas la première fois que ma copine me pique mon pseudo (moi j'suis plus en cours !)
Marsh Posté le 21-07-2003 à 19:43:31
MagicBuzz a écrit : c'est pas hyper simple comme requête. |
d'ailleurs, en passant, je crois que day() ne fonctionne pas avec MySQL, mais dayofmonth() c'est OK
Marsh Posté le 21-07-2003 à 19:45:37
chocoboy a écrit : |
Nan mais TIMESTAMP roulèze, hein
Marsh Posté le 21-07-2003 à 19:46:03
Taiche a écrit : Le plus simple eut été de stocker les dates avec un type TIMESTAMP. Les opérations avec > et < marcheront alors toutes seules. |
bah je connais pas bien le timestamp, mais à priori, t'auras toujours le problème de l'année... et si tu l'as pas, alors tu perds l'info "date de naissance"
Marsh Posté le 21-07-2003 à 19:46:43
chocoboy a écrit : |
chais pas, moi j'ai vu des %, je croyais que seul Access utilisait cette syntaxe batarde
Marsh Posté le 21-07-2003 à 19:47:32
MagicBuzz a écrit : |
Ba un timestamp c'est sous la forme YYYYMMDDHHMMSS ; genre aujourd'hui là maintenant ça fait : 20030720194725. Comme ça tu peux utiliser les opérateurs simples de comparaison sans te prendre la tête.
Marsh Posté le 21-07-2003 à 19:52:55
Bah c'est comme une date au format ISO grossomodo...
Sauf que t'as toujours à virer le facteur année, donc autant utiliser un champ standard et un raisonnement standard.
Car même si les fonctions "day()" ou "dayofmonth()" (d'ailleurs, à vue de nez, c'est pas la bonne fonction, ou alors elle porte un nom qui porte à confusion) ne sont pas compatibles, la transcription d'un SGBD à un autre sera implicite.
M'enfin ça vaut pas les fonctions de date d'Oracle, c'est encore plus simple :
where TO_CHAR(datenaiss, 'MMDD') between '0822' and '0922'
Marsh Posté le 22-07-2003 à 13:32:56
chocoboy a écrit : Stéphanie : prend un autre pseudo que le mien pour poser des questions comme ça ! Les boules ! |
Ben merci au moins pour le fou-rire de la journée.
Marsh Posté le 22-07-2003 à 17:16:19
mysql :
SELECT prenom,datenaiss,sexe FROM `st_stagiaires` WHERE right(datenaiss,5) between "08-22" AND "09-22"
Marsh Posté le 22-07-2003 à 17:19:26
ouahou... pose ta hâche à l'entrée hein
à l'avenir, pense bien à transtyper explicitement que tu as la date formattée comme tu veux. ton truc marcheras pas si la base est paramètrée pour afficher la date au format anglais par exemple (à moins que dans MySQL ce format par défaut soit figé, ce dont je doute)
Marsh Posté le 22-07-2003 à 17:23:06
Ben je reprends un peu la syntaxe qu'elle avait au debut donc
Par contre pour le systeme de date sous mysql j ai jamais vu si c t possible de changer l'affichage au contraire d'oracle (putain ce qu'il m a fait chier lui avec les dates ^^)
Marsh Posté le 22-07-2003 à 17:47:47
Pourtant, la fonction TO_CHAR permet vraiment te tout faire
Marsh Posté le 22-07-2003 à 17:56:55
pour oracle
ouais surement mais quand dans mon sqlplus tout fonctionne bien, et que la meme chose en php marche pas
qu'une date en clé primaire deconne, mais la meme sans qu'elle soit clé passe, y avait de quoi se prendre la tete.
Mais ca a ete resolu ;-)
Monsieur DBA nous a mis la date en pur french et ca a fait du bien ^^
Marsh Posté le 22-07-2003 à 20:37:59
Avec les fonctions MONTH() (renvoie le numéro du mois) et DAYOFMONTH() (le numéro du jour dans le mois), il doit y avoir moyen de faire quelque chose
http://www.mysql.com/documentation [...] _functions
Marsh Posté le 21-07-2003 à 19:13:39
hello,
bon, ben j'espère que la réponse sera OUI, parce que là, y en a ras le bol de chercher : je comprends pas : j une table avec des stagiaires et leur date de naissance et je veux tout ceux qui sont du signe de la vierge (22 Aout - 22 Septembre). Dis comme ça , ça avait l'air simple mais ma première requete à laquelle j'avais pensé : SELECT prenom,datenaiss,sexe FROM `st_stagiaires` WHERE datenaiss>"%-08-22" AND datenaiss<"%-09-22" : elle ne marche pas. Après j essayé pleins de trucs mais j'y arrive pas !!!!!!!!!!!
Est ce que qqn peut m'aider ???