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
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
A voir également:
- Prendre deux valeurs extrêmes en MySQL
- Deux ecran pc - Guide
- Prendre photo avec webcam - Guide
- Mysql community server - Télécharger - Bases de données
- Prendre une photo avec son mac - Guide
- Deux comptes whatsapp - Guide
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
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
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
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 ???
Je ne comprend pas en quoi les deux valeurs de l'exemple sont des extrêmes... Sur quels critères ???
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
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).
(
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.
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
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).
(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).
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
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 ;-)
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 ;-)
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)
Enfin maintenant avec la méthode de Droopy, il lui suffit de mettre au format date son champ au pire (si possible bien sur)
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
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 ???
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 ???
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
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 ;-)
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 ;-)
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
18 nov. 2008 à 17:21
Oui, c'est MySQL qui gère ça en interne.
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
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,
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,
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
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.
Mysql comprend les dates sous la forme YYYY-MM-DD
Ensuite, si tu veux les afficher autrement, tu peux avec la fonction DATE_FORMAT.
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
18 nov. 2008 à 17:31
Ok merci beaucoup
Sujet résolu
Sujet résolu