Prendre deux valeurs extrêmes en MySQL

Résolu
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.
Configuration: Windows XP
Firefox 3.0.4

7 réponses

  1. 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
    0
    1. Bonjour,

      Je ne comprend pas en quoi les deux valeurs de l'exemple sont des extrêmes... Sur quels critères ???
      0
      1. 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).
        0
        1. 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.
          0
          1. 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).
            0
          2. @Droopy_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 ;-)
            0
        2. 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)
          0
          1. 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 ???
            0
        3. 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 ;-)
          0
          1. Oui, c'est MySQL qui gère ça en interne.
            0
          2. @Droopy_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,
            0
          3. @JBB92Il 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.
            0
        4. Ok merci beaucoup

          Sujet résolu
          0