Page 1 sur 2
Recherche sur un format date
Posté : 13 févr. 2007, 19:01
par Ish
Bonjour,
je voudrais faire une requete sur une table avec une clause "Where" sur un champ date du type "18/01/2005 09:09:17"
Mais je veux prendre les champs entre les dates "18/01/2005" et "18/01/06" sans me soucier de l'heure
exemple :
Code : Tout sélectionner
Select * From Table Where date>"18/01/2005" AND date<"18/01/06"
Je ne sais pas comment faire !! ... est-ce que je dois utiliser des clause "Like"
Posté : 13 févr. 2007, 19:28
par ouckileou
Tout d'abord, comment se présentent les données dans une colonne de type DATE ?
Pas sous cette forme en tout cas : jj/mm/aaaa
Pour t'aider ensuite, il y a un sujet sur les dates dans la FAQ, avec un lien vers le manuel MySQL
Posté : 14 févr. 2007, 10:26
par Ish
Tout d'abord, comment se présentent les données dans une colonne de type DATE ?
Pas sous cette forme en tout cas : jj/mm/aaaa
Pour t'aider ensuite, il y a un sujet sur les dates dans la FAQ, avec un lien vers le manuel MySQL
Merci je vais aller regarder du coté de la FAQ !!
le format de ma date est : jj/mm/aaaa hh:mm::ss
Donc dans ma table j'ai le champ 'dateDeb' et je voudrais toutes les lignes dont la date est supérieur à 01/01/2007
Donc ma requete serait du style ;
-----------------------------------------------------------------
Je viens de lire la FAQ mais je n'ai rien trouver sur ce que je souhaitais, de plus je suis sous Oracle donc les fonctions de MySQL ne m'interesse pas.
Posté : 14 févr. 2007, 11:01
par ouckileou
Merci je vais aller regarder du coté de la FAQ !!
le format de ma date est : jj/mm/aaaa hh:mm::ss
Si c'est une colonne de type date, ça m'étonnerait.
Si c'est vraiment le format que tu as dans ta base, alors c'est que tu as un type genre VARCHAR et c'est très mauvais. Comment veux-tu faire des tris avec ce format ? Comment veux-tu utiliser les fonctions ? De plus, un Varchar prend 3 fois plus de place qu'un type date.
Posté : 14 févr. 2007, 11:20
par Ish
Eh bien c'est la façon dont je le vois dans ma table et il m'indique bien que c'est de type 'date'. Ce n'est pas moi qui est fait la base de donnée (sous Oracle) donc ... je ne sais pas comment faire !!!
Est-ce qu'il n'y a pas un moyen de de dire "Where date = '18/01/2007"+%
Ce n'est qu'une idée mais le +% dirait que on se fou de ce qu'il y après, un peu comme les chaines de caractères !!!
Posté : 14 févr. 2007, 11:29
par Ish
Je pense que le champ est de type DateTime
Posté : 14 févr. 2007, 11:47
par ouckileou
Je viens de lire la FAQ mais je n'ai rien trouver sur ce que je souhaitais, de plus je suis sous Oracle donc les fonctions de MySQL ne m'interesse pas.
Il faudrait prendre l'habitude de préciser le SGBD utilisé, ici personne ne le fait, alors on part naturellement sur du MySQL
Pourquoi ne pas l'avoir dis dès le début ?
Fais un "desc" de ta table pour être sûr du type
Sinon, tu as regardé dans le manuel Oracle s'il y a des fonctions équivalentes à celle de MySQL ?

Posté : 14 févr. 2007, 11:53
par Ajoloca
Bonjour,
De toutes manières cette syntaxe
"Where date = '18/01/2007"+%
est incorrecte quel que soit le SGBD(R).
Tu dois utiliser
"Where date LIKE '18/01/2007%'"
Posté : 14 févr. 2007, 16:22
par leakcim51
Salut,
tu peux essayer de formater ta date en gardant ce format : annee/mois/jour.
Ainsi tu pourras facilement faire un tri.
Cet article pourra peut être t'aider: essaye to_date() ou to_char() ou un substr().
http://www.asp-php.net/tutorial/asp-php ... es_sql.php
bon courage
Posté : 15 févr. 2007, 12:44
par Ish
Bonjour,
j'ai enfin trouver ... il faut utiliser to_date() et ça marche impécable
J'aurais une petite question qui n'a rien à voir avec le reste mais qui reste en rapport avec le SQL. Comment on fait pour dire dans une requête SQL que l'on veut afficher seulement les 50 premiers élements de la recherche.
Je sais qu'on le fait en PHP mais je voulais savoir si on pouvait le faire en amont !!
Merci
Posté : 15 févr. 2007, 12:48
par Ajoloca
Bonjour,
Sous Oracle "ROW NUM < 50" ou bien "ROWNUM < 50" sans espace (à vérifier)
Sous MySQL "LIMIT 0, 50"
Posté : 15 févr. 2007, 13:48
par zeus
"ROWNUM < 50" sans espace
Je valide cette syntaxe

Posté : 15 févr. 2007, 14:19
par Ish
Bonjour,
Sous Oracle "ROW NUM < 50" ou bien "ROWNUM < 50" sans espace (à vérifier)
Sous MySQL "LIMIT 0, 50"
Le probleme de cette syntaxe ... et que quand je fais :
Code : Tout sélectionner
Select * From table Where .... AND Rownum < 50
Order by champ2 DESC
cela me prend les premiers et pas les derniers comme je le veux !!
Posté : 15 févr. 2007, 14:32
par Ish
Je viens de trouver ... en fait il faut tout encapsuler dans un autre select :
Code : Tout sélectionner
SELECT * FROM (SELECT * FROM table Where ..... Order by champ2 Desc) Where rownum < 20
Merci quand même ... ciao !!
Posté : 15 févr. 2007, 15:36
par jojolapine
je pense qu'avec
Code : Tout sélectionner
Select * From table Where .... AND Rownum < 50
Order by champ2 ASC ça devrait le faire non?
(j'ai changer desc en asc)