IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[date] Comparer deux formats différents


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut [date] Comparer deux formats différents
    Bonjour, je met en place une petite appli en java avec une base mySql.. Dans mon appli, je récupére une année (ex : 2002) et dans ma base j'ai des "dateE" du style 24/05/2003. Comment puis-je faire pour savoir si ma "dateE" est de l'année que je récupère ?? Faut-il mettre le champ dateE dans un format spécial ou y'a-t-il moyen d'y arriver autrement ??

  2. #2
    Membre éprouvé
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Par défaut
    il te suffit de recuperer l'année de dateE et de la comparer avec l'autre.
    pour recuperer l'année, ça depend du SGBD, avec MySQL, je crois que tu le fait avec DATE_FORMAT.

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    est-ce que tu pourrais m'en dire un peu plus sur DATE_FORMAT ??

  4. #4
    Membre éprouvé
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Par défaut
    en fait, date_format te formate ta date comme tu veux. il faut juste que ta date soit une Date Mysql.

    POur plus d'info, voici l'extrait de la DOC :

    DATE_FORMAT(date,format) Formate la date date en fonction de la chaîne format. Les formats suivants peuvent être utilisé dans format :
    %M Month name (January..December)
    %W Weekday name (Sunday..Saturday)
    %D Day of the month with english suffix (1st, 2nd, 3rd, etc.)
    %Y Year, numeric, 4 digits
    %y Year, numeric, 2 digits
    %a Abbreviated weekday name (Sun..Sat)
    %d Day of the month, numeric (00..31)
    %e Day of the month, numeric (0..31)
    %m Month, numeric (01..12)
    %c Month, numeric (1..12)
    %b Abbreviated month name (Jan..Dec)
    %j Day of year (001..366)
    %H Hour (00..23)
    %k Hour (0..23)
    %h Hour (01..12)
    %I Hour (01..12)
    %l Hour (1..12)
    %i Minutes, numeric (00..59)
    %r Time, 12-hour (hh:mm:ss [AP]M)
    %T Time, 24-hour (hh:mm:ss)
    %S Seconds (00..59)
    %s Seconds (00..59)
    %p AM or PM
    %w Day of the week (0=Sunday..6=Saturday)
    %U Week (0..52), where Sunday is the first day of the week
    %u Week (0..52), where Monday is the first day of the week
    %% A literal `%'.

    Tous les autres caractères sont recopiés, sans interpretation
    Exemples :

    select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
    --> 'Saturday October 1997'

    select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
    --> '22:23:00'

    select DATE_FORMAT('1997-10-04 22:23:00',
    '%D %y %a %d %m %b %j');
    --> '4th 97 Sat 04 10 Oct 277'
    select DATE_FORMAT('1997-10-04 22:23:00',
    '%H %k %I %r %T %S %w');
    --> '22 22 10 10:23:00 PM 22:23:00 00 6'
    dans ton cas, je pense donc que tu peux faire :

    DATE_FORMAT(dateE,'%Y');

    bon courage !

  5. #5
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    et est-ce que c'est pas grave si dateE n'est pas au format aaaa/mm/jj mais au format "francais" : jj/mm/aaaa ???

  6. #6
    Membre éprouvé
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Par défaut
    je ne sais pas. je pense qu'il faut simplement qu'il soit declaré en tant que format DATE de mysql. essaie voir si ça fonctionne.

    je trouve ça bizarre que tu aille le format jj/mm/aaaa quand même, ta date est bien en DATE et pas en varchar ?

  7. #7
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    en fait le truc c que je récupére des données via un autre logiciel. ensuite je fais load data infile.. et donc je mets ce que je veux comme type pour les champs.. mais bon, je vais essayer avec DATE. mais la, j'ai plusieurs choix : je mets date, time, datetime,timestamp ?? je pense que c date.. c ca ??

  8. #8
    Membre éprouvé
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Par défaut
    oui date, c'est bien.
    ensuite, tu pourras utiliser DATE_FORMAT pour comparer ce que tu veux.

    sinon, si c'est en VARCHAR, tu pourras toujours comparer mais c'est moins propre.

  9. #9
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    ok
    bon, je fais ca dès que je peux et je te tiens au courant..

    Merci

  10. #10
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    je viens de regarder un peu la doc mysql et apparement, il faut que l'année soit en premier pour pouvoir etre considérer comme type date..
    Sinon, comme tu le dis je ferais avec varchar (mais la je sais pas comment faire..)

    Y'a-t-il une solution pour l'histoire de l'année en premier, ou faut-il que j'écrive une petite routine qui me fasse le changement ??

  11. #11
    Membre éprouvé
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Par défaut
    il me semble que le format date de mysql c'est aaaa-mm-jj mais le champ de ta table doit être déclaré comme DATE.

    sinon, je ne sais pas quoi t'expliquer d'autre car je n'ai pas bien compris ce que tu faisais. explique moi un peu mieux et je t'aiderai.

    bon courage en attendant

  12. #12
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    salut, alors, je vais essayer de t'expliquer ce que je fais..

    1. je recupere des données d'un autre logiciel sous forme de fichier texte. dans les données de ce fichier, y'a la date que j'appelle dateE (pour date Entretien)
    2. je renseigne une base mySql a partir de ce fichier. Donc, je crée la base avec le type de champ que je veux et ensuite je fais load data infile...
    3. et enfin je fais mes requetes sur cette base. Dans une de ces requete, je recupere une année de l'interface. Et il faut que je trouve les entretiens qui se sont fait lors de cette année. Il faut donc que je trouve les éléments dont l'année de dateE est la même que celle récupéree.

    Le problème vient du fait que dans les données que je récupére, la date est au format jj/mm/aaaa, j'ai donc mis la colonne dateE en varChar..

    Voila, j'espere etre compréhensible..

    Merci..

    nico

  13. #13
    Membre éprouvé
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Par défaut
    ok, je pense que le mieux que tu puisse faire, c'est mettre ton champ mysql en DATE et passer tes données de jj/mm/aaaa en aaaa-mm-jj avec une petite moulinette. je pense qu'avec load data infile ça devrait passer. essaie avec un ou deux enregistrements pour voir si ça passe...

  14. #14
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    tu veux dire que dans la requete load data infile, je peux changer le format de cette date ?? j'aurais pas besoin de traiter ma base ligne par ligne.. Ca m'aiderait si tu savais la syntaxe et la fonction que je dois utiliser pour faire ce changement..

  15. #15
    Membre éprouvé
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Par défaut
    non, c'est pas ça que je voualis dire. en fait, à mon avis, il faut que tu traite ton fichier texte d'abord. donc que tu fasse une moulinette qui transforme tes champs jj/mm/aaaa en aaaa-mm-jj.

    après tu fais load data in file et tu precise que c'est un format DATE.

    sinon, je ne vois pas comment faire directement dans la requete, je ne connais pas les commandes pour ça, je ne sais pas si c'est possible.

  16. #16
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    ok, j'ai bien compris.. je vais faire la moulinette..

    Merci

    nico

  17. #17
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    Voila g fé la moulinnette, je vais maintenant essayer de mettre le champ au format date..

  18. #18
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 23
    Par défaut
    voila, c impec avec le type date..
    dans ma base la date est enregistree sous forme de aaaa-mm-jj, j'ai juste a faire dans le where : year(dateE)=date_recue_de_l_interface..

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Comparaison deux dates avec un format différent
    Par loux69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/11/2013, 09h08
  2. [Batch] Comparer deux formats de date
    Par manu7762323 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 18/03/2010, 14h15
  3. [Dates] Comparer deux dates
    Par pierrot10 dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2007, 08h23
  4. [Dates] comparer deux date
    Par BigBarbare dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2006, 23h05
  5. Comparaison de 2 dates dans des formats différents
    Par frdek dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/02/2005, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo