Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2968 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete SQL : Suis je nulle ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete SQL : Suis je nulle ???

n°463783
chocoboy
Posté le 21-07-2003 à 19:13:39  profilanswer
 

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 ??? :cry:

mood
Publicité
Posté le 21-07-2003 à 19:13:39  profilanswer
 

n°463788
MagicBuzz
Posté le 21-07-2003 à 19:21:20  profilanswer
 

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 ;)


Message édité par MagicBuzz le 21-07-2003 à 19:22:10
n°463793
chocoboy
Posté le 21-07-2003 à 19:27:41  profilanswer
 

Stéphanie : prend un autre pseudo que le mien pour poser des questions comme ça ! Les boules !  :sweat:


Message édité par chocoboy le 21-07-2003 à 19:27:58
n°463796
chocoboy
Posté le 21-07-2003 à 19:34:28  profilanswer
 

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

n°463807
MagicBuzz
Posté le 21-07-2003 à 19:38:41  profilanswer
 

chocoboy a écrit :

Stéphanie : prend un autre pseudo que le mien pour poser des questions comme ça ! Les boules !  :sweat:


Rhô la vieille feinte pour pas se faire TT :lol: ;)
 
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é ;)

n°463817
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-07-2003 à 19:42:11  profilanswer
 

Le plus simple eut été de stocker les dates avec un type TIMESTAMP. Les opérations avec > et < marcheront alors toutes seules.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°463819
chocoboy
Posté le 21-07-2003 à 19:42:35  profilanswer
 

MagicBuzz a écrit :


Rhô la vieille feinte pour pas se faire TT :lol: ;)
 
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é ;)


 
ouinnnnnn  :cry:  c pas une feinte... c pas la première fois que ma copine me pique mon pseudo (moi j'suis plus en cours !)

n°463824
chocoboy
Posté le 21-07-2003 à 19:43:31  profilanswer
 

MagicBuzz a écrit :

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 ;)


 
d'ailleurs, en passant, je crois que day() ne fonctionne pas avec MySQL, mais dayofmonth() c'est OK

n°463829
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-07-2003 à 19:45:37  profilanswer
 

chocoboy a écrit :


d'ailleurs, en passant, je crois que day() ne fonctionne pas avec MySQL, mais dayofmonth() c'est OK


Nan mais TIMESTAMP roulèze, hein :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°463830
MagicBuzz
Posté le 21-07-2003 à 19:46:03  profilanswer
 

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"

mood
Publicité
Posté le 21-07-2003 à 19:46:03  profilanswer
 

n°463832
MagicBuzz
Posté le 21-07-2003 à 19:46:43  profilanswer
 

chocoboy a écrit :


 
d'ailleurs, en passant, je crois que day() ne fonctionne pas avec MySQL, mais dayofmonth() c'est OK


chais pas, moi j'ai vu des %, je croyais que seul Access utilisait cette syntaxe batarde :)

n°463835
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-07-2003 à 19:47:32  profilanswer
 

MagicBuzz a écrit :


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"


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.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°463846
MagicBuzz
Posté le 21-07-2003 à 19:52:55  profilanswer
 

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' :)

n°464603
Krueger
tout salaire demande dutravail
Posté le 22-07-2003 à 13:32:56  profilanswer
 

chocoboy a écrit :

Stéphanie : prend un autre pseudo que le mien pour poser des questions comme ça ! Les boules !  :sweat:

Ben merci au moins pour le fou-rire de la journée. :D

n°465067
Sebastien
Posté le 22-07-2003 à 17:16:19  profilanswer
 

mysql :
SELECT prenom,datenaiss,sexe FROM `st_stagiaires` WHERE right(datenaiss,5) between "08-22" AND "09-22"


Message édité par Sebastien le 22-07-2003 à 17:17:46
n°465071
MagicBuzz
Posté le 22-07-2003 à 17:19:26  profilanswer
 

ouahou... pose ta hâche à l'entrée hein :D
 
à 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)

n°465074
Sebastien
Posté le 22-07-2003 à 17:23:06  profilanswer
 

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 ^^)

n°465102
MagicBuzz
Posté le 22-07-2003 à 17:47:47  profilanswer
 

Pourtant, la fonction TO_CHAR permet vraiment te tout faire :)

n°465118
Sebastien
Posté le 22-07-2003 à 17:56:55  profilanswer
 

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 ^^

n°465251
mrbebert
Posté le 22-07-2003 à 20:37:59  profilanswer
 

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 [:figti]
http://www.mysql.com/documentation [...] _functions


Message édité par mrbebert le 22-07-2003 à 20:39:02

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete SQL : Suis je nulle ???

 

Sujets relatifs
[SQL] requete pour extraire une partie de la chain de de resultatASP : L'opération doit utiliser une requête qui peut être mise à jour
[SQL] Temps d'execution d'une requete bizarre[SQL] requete (optimisation toute simple help!!!!)
Access requête sur reception du focusTable SQL de pays
[SQL] qlq connait comment récupérer le jour de la semaine? 
Plus de sujets relatifs à : Requete SQL : Suis je nulle ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR