Prendre deux valeurs extrêmes en MySQL [Résolu/Fermé]

Signaler
Messages postés
29
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
22 juin 2010
-
Messages postés
29
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
22 juin 2010
-
Bonjour,

Je souhaiterai faire une requête MySQL qui consisterai à prendre les deux bouts (ou les deux extrêmes si vous préférez).

Exemple :

|donnée 1|2008-11-04|
|donnée 2|2008-15-06|
|donnée 3|2008-19-10|

Dans cet exemple je voudrai récupérer la ligne : "donnée 1" et la ligne "donnée 2". Est-ce possible et si oui comment, car je dois avouer que je ne vois pas.

7 réponses

tu concatènes tous les chiffres de ta date (si il y a bien séparation par des tirets) et après tu transformes ta zone en numérique puis tu sélectionnes le MAX et le MIN de la zone

ca doit etre dans le style SELECT MIN(NUMERIC(CONCAT(CONCAT(SUBSTR(zone, 1, 4), SUBSTR(zone, 6, 2)), SUBSTR(9,2)))....

Ca doit être à peu près cela et tu fais la même avec la fonction MAX
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
26
Bonjour,

Je ne comprend pas en quoi les deux valeurs de l'exemple sont des extrêmes... Sur quels critères ???
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
26
Tu peux faire comme ça :

(
SELECT *
FROM `Database`
ORDER BY Date ASC
LIMIT 1
)
UNION (

SELECT *
FROM `Database`
ORDER BY Date DESC
LIMIT 1
)

Ça donne 'Donnee 1' et 'Donnee 3' qui sont pour moi les extrêmes (en terme de dates).
attention la méthode de droopy est bonne mais pas dans ce cas la (vrai quand la date est de type SSAA-MM-JJ) mais dans ce cas il peut y avoir un problème avec le 31 janvier 2008 qui sera plus grand que le 07 décembre 2008.
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
26
Si le champs est de type date, Mysql les stocke sous forme d'entiers
(nombre de secondes depuis le 01-01-1970),
donc quelque soit l'affichage qu'il en fait (format américain dans ce cas),
l'ordre des dates doit rester correct.

C'est pour ça qu'il faudrait un peu plus d'explications (description des champs).
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
26 >
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009

Je corrige ce que j'ai dit, Mysql stocke bien ses dates sous forme d'entier, mais c'est pas le nombre de secondes... :

Toujours provenant du manuel officiel :

DATE: A three-byte integer packed as DD + MM×32 + YYYY×16×32
TIME: A three-byte integer packed as DD×24×3600 + HH×3600 + MM×60 + SS

Là je traduis pas, c'est des maths ;-)
C'est sur, j'ai pris en postulat que c'était juste de l'alphanumérique (comme on trouve souvent dans le domaine bancaire)
Enfin maintenant avec la méthode de Droopy, il lui suffit de mettre au format date son champ au pire (si possible bien sur)
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
26
Je pense que pour gérer les date, il faut un champs date, ça facilite grandement la vie,
car tous les traitements de tri, et de modification de date (passer au jour/mois suivant)
sont tous gérés par MySQL en interne, ce qui est très pratique.

Par contre, : (source Mysql Manuel)
Although MySQL tries to interpret values in several formats, dates always must be given in year-month-day order (for example, '98-09-04'), rather than in the month-day-year or day-month-year orders commonly used elsewhere (for example, '09-04-98', '04-09-98').

En gros, il faut que tu convertisses toi même les dates du format américain (Année-Jour-Mois) vers le format ISO (Année-Mois-Jour), Mysql essaie de le faire automatiquement, mais je peux te garantir que dans ton cas, il y arrivera
pas : Est-ce que 2008-02-03 est le 2 mars 2008 ou le 3 février 2008 ???
Messages postés
29
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
22 juin 2010

Oui ce sont des champs "date".

Question subsidiaire avec la méthode de droopy est-ce que ça marche si les dates sont au format français ? I'm so happy ;-)
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
26
Oui, c'est MySQL qui gère ça en interne.
Messages postés
29
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
22 juin 2010
>
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009

Salut,

Tu me confirmes qu'une date au format JJ-MM-AAAA dans MySQL fonctionne avec ta méthode ?

En tous les cas merci beaucoup pour la rapidité de ton intervention, ainsi qu'à tous les participants.

Cordialement,
Messages postés
248
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
26 >
Messages postés
29
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
22 juin 2010

Il faut faire la distinction entre ce que MySQL prend et ce que l'on affiche ensuite.
Mysql comprend les dates sous la forme YYYY-MM-DD

Ensuite, si tu veux les afficher autrement, tu peux avec la fonction DATE_FORMAT.
Messages postés
29
Date d'inscription
jeudi 16 octobre 2008
Statut
Membre
Dernière intervention
22 juin 2010

Ok merci beaucoup

Sujet résolu