Prendre deux valeurs extrêmes en MySQL

Résolu/Fermé
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010 - 18 nov. 2008 à 16:30
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010 - 18 nov. 2008 à 17:31
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.
A voir également:

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
0
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 16:42
Bonjour,

Je ne comprend pas en quoi les deux valeurs de l'exemple sont des extrêmes... Sur quels critères ???
0
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 16:53
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
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
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 17:10
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
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25 > Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009
18 nov. 2008 à 17:25
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 17:20
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
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010
18 nov. 2008 à 17:16
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
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 17:21
Oui, c'est MySQL qui gère ça en interne.
0
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010 > Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009
18 nov. 2008 à 17:24
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
Droopy_ Messages postés 248 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25 > JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010
18 nov. 2008 à 17:29
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.
0
JBB92 Messages postés 29 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 22 juin 2010
18 nov. 2008 à 17:31
Ok merci beaucoup

Sujet résolu
0