Recherche sur un format date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Recherche sur un format date

par Ish » 15 févr. 2007, 16:07

Nan c'est pas bon mais merci quand même .... ma solution est LA solution :lol:

Parceque je fait une requete et je fait un Order By sur une date pour pouvoir avoir les derniers enregistrement (format date) en premier, puis je veux prendre les n premiers !!!

Ta solution ne résout rien puisqu'elle me donne les n premiers enregistrement de la base ...

Bref ... merci de ta contribution !! :wink:

par jojolapine » 15 févr. 2007, 15:36

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)

par Ish » 15 févr. 2007, 14:32

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

par Ish » 15 févr. 2007, 14:19

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

par zeus » 15 févr. 2007, 13:48

"ROWNUM < 50" sans espace
Je valide cette syntaxe ;)

par Ajoloca » 15 févr. 2007, 12:48

Bonjour,

Sous Oracle "ROW NUM < 50" ou bien "ROWNUM < 50" sans espace (à vérifier)

Sous MySQL "LIMIT 0, 50"

par Ish » 15 févr. 2007, 12:44

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

par leakcim51 » 14 févr. 2007, 16:22

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

par Ajoloca » 14 févr. 2007, 11:53

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%'" 

par ouckileou » 14 févr. 2007, 11:47

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

par Ish » 14 févr. 2007, 11:29

Je pense que le champ est de type DateTime

par Ish » 14 févr. 2007, 11:20

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

par ouckileou » 14 févr. 2007, 11:01

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.

par Ish » 14 févr. 2007, 10:26

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 ;

Code : Tout sélectionner

Select * from table Where dateDeb > '01/01/2007
-----------------------------------------------------------------
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.

par ouckileou » 13 févr. 2007, 19:28

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