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

 MySQL Discussion :

PHPmyAdmin - 0000-00-00 lors de l'import d'un fichier contenant une date au format 'jour/mois/année'


Sujet :

MySQL

  1. #1
    Invité
    Invité(e)
    Par défaut PHPmyAdmin - 0000-00-00 lors de l'import d'un fichier contenant une date au format 'jour/mois/année'
    Bonjour, je galère à afficher correctement la date respectant le format 'jour/mois/année' (année en 4 chiffres) sur phpmyadmin (j'utilise wamp) quelqu'un peut me donner des pistes svp ?

    Voici la table en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create table T_TARIF (
    TRF_DATE_DEBUT DATE primary key, 
    TRF_TAUX_TAXES NUMERIC not null,
    TRF_PETIT_DEJEUNE NUMERIC(8,2) not null /*je retire la virgule*/
    );
     
    /* index*/
    create unique index IDX_T_TARIF_PK on T_TARIF (TRF_DATE_DEBUT);
    voici ce que je ne parviens pas à injecter correctement pour le champ TRF_DATE_DEBUT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /*insertion dans T_TARIF*/
     
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01/01/1999',  18.60,  50.00);
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01/09/1999',  20.60,  50.00);
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01/01/2000',  20.60,  50.00);
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01/09/2000',  20.60,  50.00);
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01/01/2001',  20.60,  50.00);
    voici la date telle que affichée en excutant (en important le fichier sous format ISO_8859-1 :



    Voici ce que j'ai essayé dans l'ordre pour palier à ce problème (après lecture en anglais de document et de manuel disponibles sur le net)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /*alter table t_Tarif modify column TRF_DATE_DEBUT date;*/
     
    /*update t_tarif set TRF_DATE_DEBUT =(select str_to_date(TRF_DATE_DEBUT, '%d/%m/%Y'));*/
     
    /*alter table t_Tarif modify column TRF_DATE_DEBUT date;*/
     
    select * from t_Tarif;
    Merci de m'avoir lu.
    Dernière modification par Invité ; 02/12/2022 à 13h13.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Déjà indiquer et sélectionner le forum du SGBD utilisé eut été un meilleur choix et enfin un tag comme [HELP] ne sert à rien. Déplacé vers MYSQL

    Une fois ceci posé, je devine qu'il s'agit de MySQL ou de MariaDB pour ce qui est de la BDD.
    Le type de la colonne est DATE donc se référer à la section https://dev.mysql.com/doc/refman/8.0...ime-types.html

    Une date doit être exprimée sous la forme year-month-day même si MySQL tente de l'interpréter si elle n'est pas indiquée dans le bon format, mais aucune de vos insertions ne permettait de distinguer un format mois/jour/année d'un format jour/mois/année !

    Utilisez le bon format ou alors STR_TO_DATE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01-09-1999',  20.60,  50.00);
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( STR_TO_DATE('01/01/1999','%d/%m/%Y'),  18.60,  50.00);
    Enfin, une remarque sur la structure, utiliser TRF_DATE_DEBUT comme clé primaire est loin d'être une bonne idée, utilisez plutôt une colonne AUTO_INCREMENT en gardant l'index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create unique index IDX_T_TARIF_PK on T_TARIF (TRF_DATE_DEBUT);
    Qui si mes souvenirs MYSQL sont bons était inutile puisque la colonne est déclarée en PRIMARY KEY (bon, je me trompe peut-être, MYSQL n'est pas mon SGBD de prédilection)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je confirme, s'il s'agit du SGBD MySQL, alors la création de l'index correspondant à la PK est implicite.
    Merci de confirmer le SGBD, le sujet sera déplacé au bon endroit le cas échéant.

    Par ailleurs, il serait bien de renommer la colonne TRF_PETIT_DEJEUNE en TRF_PETIT_DEJEUNER tant qu'à faire

    Enfin, la présence du taux de taxe dans cette table est un mauvais choix : le taux de taxe est réglementaire, le positionner ici impose de le répéter autant de fois qu'il y a de dates dans cette table, c'est donc à la fois une redondance et un risque d'erreur

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour, merci pour vos commentaires je mets à jour le titre pour PHPmyADMIN à la place de HELP

    j'avais écris
    sur phpmyadmin (j'utilise wamp)
    dans mon premier post.


    Je pense ainsi être au bon endroit dans le forum car j'avais bien essayé de trouvé phpmyadmin sur ce forum mais j'ai posté ici. Merci à celui qui m'aidera par ailleurs de trouver le bon endroit poser des questions sur phpmyadin car je l'utilise directement à partir de WAMPP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Par ailleurs, il serait bien de renommer la colonne TRF_PETIT_DEJEUNE en TRF_PETIT_DEJEUNER tant qu'à faire

    Merci pour cette précision. Je préfère quand même rester fidèle à la notation car c'est ainsi qu'il est écrit dans les exercices de SQL de A à Z proposés dans le code de SQL PRO trouvable à partir de ce lien https://sqlpro.developpez.com/cours/bddexemple/

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par environnementBash Voir le message
    Je pense ainsi être au bon endroit dans le forum car j'avais bien essayé de trouvé phpmyadmin sur ce forum mais j'ai posté ici. Merci à celui qui m'aidera par ailleurs de trouver le bon endroit poser des questions sur phpmyadin car je l'utilise directement à partir de WAMPP
    La question étant sur la Base de Données MYSQL ou MariaDB j'y ai déplacé la discussion.

    PHPmyAdmin n'est qu'un outil (GUI) qui travaille sur des bases de données, MySQL ou MariaDB selon la version de WAMPP installée
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Invité
    Invité(e)
    Par défaut
    Tout d'abord merci d'avoir déplacé ce post au bon endroit.

    Ensuite je bloque toujours sur ce truc :

    [QUOTE=SergioMaster;11898833]

    Utilisez le bon format ou alors STR_TO_DATE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01-09-1999',  20.60,  50.00);
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( STR_TO_DATE('01/01/1999','%d/%m/%Y'),  18.60,  50.00);

    Mon problème avec la fait de devoir ajouter à chaque insert ( STR_TO_DATE('.../.../...','')) par exemple est que ce sera impossible car je devrai ensuite injecter ce code suivant et puis encore d'autres qui sont 10 foix plus longs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1,  '01/01/1999',  220.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1,  '01/09/1999',  242.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1,  '01/01/2000',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1,  '01/09/2000',  330.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1,  '01/01/2001',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 2,  '01/01/1999',  250.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 2,  '01/09/1999',  275.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 2,  '01/01/2000',  300.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 2,  '01/09/2000',  375.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 2,  '01/01/2001',  400.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 3,  '01/01/1999',  320.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 3,  '01/09/1999',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 3,  '01/01/2000',  384.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 3,  '01/09/2000',  480.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 3,  '01/01/2001',  512.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 4,  '01/01/1999',  220.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 4,  '01/09/1999',  242.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 4,  '01/01/2000',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 4,  '01/09/2000',  330.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 4,  '01/01/2001',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 5,  '01/01/1999',  240.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 5,  '01/09/1999',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 5,  '01/01/2000',  288.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 5,  '01/09/2000',  360.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 5,  '01/01/2001',  384.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 6,  '01/01/1999',  250.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 6,  '01/09/1999',  275.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 6,  '01/01/2000',  300.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 6,  '01/09/2000',  375.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 6,  '01/01/2001',  400.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 7,  '01/01/1999',  220.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 7,  '01/09/1999',  242.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 7,  '01/01/2000',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 7,  '01/09/2000',  330.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 7,  '01/01/2001',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 8,  '01/01/1999',  280.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 8,  '01/09/1999',  308.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 8,  '01/01/2000',  336.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 8,  '01/09/2000',  420.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 8,  '01/01/2001',  448.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 9,  '01/01/1999',  250.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 9,  '01/09/1999',  275.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 9,  '01/01/2000',  300.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 9,  '01/09/2000',  375.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 9,  '01/01/2001',  400.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 10,  '01/01/1999',  320.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 10,  '01/09/1999',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 10,  '01/01/2000',  384.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 10,  '01/09/2000',  480.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 10,  '01/01/2001',  512.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 11,  '01/01/1999',  320.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 11,  '01/09/1999',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 11,  '01/01/2000',  384.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 11,  '01/09/2000',  480.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 11,  '01/01/2001',  512.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 12,  '01/01/1999',  270.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 12,  '01/09/1999',  297.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 12,  '01/01/2000',  324.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 12,  '01/09/2000',  405.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 12,  '01/01/2001',  432.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 13,  '01/01/1999',  275.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 13,  '01/09/1999',  300.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 13,  '01/01/2000',  325.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 13,  '01/09/2000',  400.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 13,  '01/01/2001',  425.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 14,  '01/01/1999',  240.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 14,  '01/09/1999',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 14,  '01/01/2000',  288.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 14,  '01/09/2000',  360.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 14,  '01/01/2001',  384.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 15,  '01/01/1999',  220.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 15,  '01/09/1999',  242.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 15,  '01/01/2000',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 15,  '01/09/2000',  330.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 15,  '01/01/2001',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 16,  '01/01/1999',  250.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 16,  '01/09/1999',  275.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 16,  '01/01/2000',  300.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 16,  '01/09/2000',  375.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 16,  '01/01/2001',  400.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 17,  '01/01/1999',  270.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 17,  '01/09/1999',  297.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 17,  '01/01/2000',  324.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 17,  '01/09/2000',  405.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 17,  '01/01/2001',  432.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 18,  '01/01/1999',  220.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 18,  '01/09/1999',  242.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 18,  '01/01/2000',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 18,  '01/09/2000',  330.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 18,  '01/01/2001',  352.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 19,  '01/01/1999',  250.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 19,  '01/09/1999',  275.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 19,  '01/01/2000',  300.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 19,  '01/09/2000',  375.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 19,  '01/01/2001',  400.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 20,  '01/01/1999',  220.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 20,  '01/09/1999',  242.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 20,  '01/01/2000',  264.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 20,  '01/09/2000',  330.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 20,  '01/01/2001',  352.00);
    source : https://sqlpro.developpez.com/cours/bddexemple/ de SQL PRO


    Mise à jour :
    J'ai lu les post les plus anciens comme celui -ci https://www.developpez.net/forums/d1...ysql-francais/
    maisje ne vois toujours pas comment avec DATE_FORMAT je pourrais faire en sorte que lors de l'import du code ci-dessus (où je suis obligé d'insérer au format '01/01/2001' donc jour/mois/année) cela puisse s'afficher telle quelle car pour le moment je n'obtiens que des 0000-00-00 en raison du format de base YYYY-MM-DD de DATE.

    J'importe le fichier encodé pour du ISO9959-1 dans ma bade de données en utf8_unicode_ci.
    Dernière modification par Invité ; 02/12/2022 à 13h17.

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par environnementBash Voir le message
    Mon problème avec le fait de devoir ajouter à chaque insert ( STR_TO_DATE('.../.../...','')) par exemple est que ce sera impossible, car je devrais ensuite injecter ce code suivant et puis encore d'autres qui sont 10 fois plus longs...
    Que ce soit STR_TO_DATE ou DATE_FORMAT, vous n'avez pas le choix.
    Impossible ! non
    Un éditeur de texte comme Notepad++ et quelques manipulations de recherche remplacement
    en exemple
    Nom : Capture.PNG
Affichages : 520
Taille : 47,9 Ko
    pour la fin, il suffit de rechercher
    Nom : Capture_1.PNG
Affichages : 521
Taille : 20,9 Ko

    et encore, je suis sûr qu'il doit être possible de faire en une seule passe mais, je ne maitrise pas bien les "expressions régulières" de notepad

    NB - Vous auriez utilisé le script de création des données Date ISO (AAAA-MM-JJ) vous n'auriez pas eu ce souci de conversion de date

    Il m'étonnait que SQLPro n'ait pas indiqué de mettre des numéros auto-incrémentés, mais je lis :
    Citation Envoyé par SQLPro
    NOTA*: nous n'avons pas introduit de colonne de type auto-incrémenté dans les scripts de création de base de données,
    De plus le tutoriel est de 2003 et les scripts proposés ne sont pas pour MySQL.(Je me disais bien, comme il est loin de porter mySQL dans son cœur, qu'il y avait quelques loups)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    Citation Envoyé par environnementBash
    Bonjour, je galère à afficher correctement la date respectant le format 'jour/mois/année' (année en 4 chiffres) sur phpmyadmin (j'utilise wamp) quelqu'un peut me donner des pistes svp ?
    Puisque vous utilisez WAMP, il s'agit bien du SGBDR MySql que vous utilisez.

    Le type DATE utilise le format "YYYY-MM-DD". Si le format n'est pas compréhensible par MySQL, il mettra "0000-00-00" ou une erreur lors de l'insertion.

    Je trouve plutôt suspect d'utiliser une date comme clef primaire. Êtes vous certain de ne jamais avoir deux dates identiques ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into T_TARIF (TRF_DATE_DEBUT, TRF_TAUX_TAXES, TRF_PETIT_DEJEUNE) values ( '01/01/1999',  18.60,  50.00);
    Vous faites une insertion avec un mauvais format. MySql va vérifier que le format est correcte, ce qui n'est pas votre cas.

    Voici votre déclarative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRF_DATE_DEBUT  DATE  primary key,
    Vu que c'est une clef primaire, j'aurai préféré voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRF_DATE_DEBUT  DATE  NOT NULL  primary key,
    mais cela ne résout pas les doublons puisqu'ils seront rejetés.

    Le mieux est de déclarer un identifiant clef primaire et ne pas mettre la colonne date en tant que clef primaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ID             integer unsigned not null auto_increment primary key,
    trf_date_debut date             not null,
    Si j'ai bien compris, vous effectuez un import à partir d'un fichier.
    Vous ne désirez pas modifier votre fichier import, ce que je peu comprendre, surtout s'il est volumineux.
    La solution indiqué par SergioMaster de mettre "STR_TO_DATE('01/01/1999','%d/%m/%Y')" et tout à fait correcte.

    La solution que je propose est de passer par une colonne intermédiaire pour effectuer le changement de format.
    Pour que l'insertion puisse se faire, vous devez changer le format de la colonne en mettant "char(10)".
    Créer une nouvelle colonne au format date.
    Pour effectuer la modification du format, je propose d'utiliser un déclencheur (trigger).
    Quand le chargement aura été fait, vous supprimer l'ancienne colonne et renommer la nouvelle colonne, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `trf_date_debut`  date  NOT NULL PRIMARY KEY
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    alter table `test` modify `trf_date_debut`     char(10) NOT NULL
    --------------
     
    --------------
    alter table `test` add    `trf_date_debut_bis` date     NOT NULL after `trf_date_debut`
    --------------
     
    --------------
    describe test
    --------------
     
    +--------------------+----------+------+-----+---------+-------+
    | Field              | Type     | Null | Key | Default | Extra |
    +--------------------+----------+------+-----+---------+-------+
    | trf_date_debut     | char(10) | NO   | PRI | NULL    |       |
    | trf_date_debut_bis | date     | NO   |     | NULL    |       |
    +--------------------+----------+------+-----+---------+-------+
    --------------
    commit
    --------------
     
    --------------
    DROP TRIGGER IF EXISTS `verify_date`
    --------------
     
    --------------
    CREATE TRIGGER `verify_date`
    BEFORE INSERT ON `test`
    FOR EACH ROW
    BEGIN
      SET NEW.trf_date_debut_bis = str_to_date(NEW.trf_date_debut,'%d/%m/%Y');
    END
    --------------
     
    --------------
    insert into test (TRF_DATE_DEBUT) values ('01/01/1999')
    --------------
     
    --------------
    insert into test (TRF_DATE_DEBUT) values ('01/09/1999')
    --------------
     
    --------------
    insert into test (TRF_DATE_DEBUT) values ('01/01/2000')
    --------------
     
    --------------
    insert into test (TRF_DATE_DEBUT) values ('01/09/2000')
    --------------
     
    --------------
    insert into test (TRF_DATE_DEBUT) values ('01/01/2001')
    --------------
     
    --------------
    alter table `test` drop column    `trf_date_debut`
    --------------
     
    --------------
    alter table `test` change column  `trf_date_debut_bis`  `trf_date_debut`date  NOT NULL PRIMARY KEY
    --------------
     
    --------------
    describe test
    --------------
     
    +----------------+------+------+-----+---------+-------+
    | Field          | Type | Null | Key | Default | Extra |
    +----------------+------+------+-----+---------+-------+
    | trf_date_debut | date | NO   | PRI | NULL    |       |
    +----------------+------+------+-----+---------+-------+
    --------------
    commit
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----------------+
    | trf_date_debut |
    +----------------+
    | 1999-01-01     |
    | 1999-09-01     |
    | 2000-01-01     |
    | 2000-09-01     |
    | 2001-01-01     |
    +----------------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    Tout cela, à cause d'un format de date dont vous n'avez pas tenu compte dès le début de la modélisation de votre base de données.
    Il y a d'autres points dans votre modélisation qui ne vont pas.
    Je vous conseille vivement avant de poursuivre dans vos travaux, de revoir de font en comble la modélisation de votre base de données.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Invité
    Invité(e)
    Par défaut
    Merci pour vos messages, je vais me débrouiller avec tout ce qui j'ai appris dans cette discussion

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2019, 16h58
  2. Erreur SQL lors de l'insertion d'une date
    Par jdvacheron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/07/2007, 16h31
  3. [MySQL] Faire un INSERT d'une date format Francais dans un champ date '0000-00-00' ?
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/11/2006, 13h49
  4. [JDesktopPane] Problème lors de l'insertion d'une JInternalFrame
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 21/09/2005, 01h38

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