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

SQL Procédural MySQL Discussion :

Problème avec la fonction str_to_date_() dans un trigger. [MySQL-5.7]


Sujet :

SQL Procédural MySQL

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut Problème avec la fonction str_to_date_() dans un trigger.
    Bonjour à tous

    Voici le code de mon trigger :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TRIGGER `CommandeFolio` BEFORE INSERT ON `mescommandes`
    FOR EACH ROW BEGIN
    declare _fininvest integer ;
    
    IF NEW.NUMCMDE IS NOT NULL THEN
    SET NEW.CMDEFOLIO = LPAD(NEW.NUMCMDE,5,0);
    SET NEW.DATECOM = STR_TO_DATE(NEW.DATECMDE, '%Y-%m-%d'); 
    
    END IF;
    END

    A l'insertion dans ma table voici le message de retour :
    MySQL a répondu : Documentation
    #1411 - Incorrect datetime value: '21/12/2020' for function str_to_date
    DATECMDE est de type Varchar(10);
    DATECOM est de type date.

    Je comprend pas ce qui se passe ! je regarde la documention https://www.w3schools.com/sql/func_m...tr_to_date.asp
    Mais

    Merci de m'aider

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 110
    Points : 28 435
    Points
    28 435
    Par défaut
    Regarde bien le format attendu dans ton appel à la fonction str_to_date et celui de la chaine que tu lui passes…

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    Parameter Values
    Parameter Description
    string Required. The string to be formatted to a date
    format Required. The format to use. Can be one or a combination of the following values:
    Donc le premier paramètre, une chaine et le deuxième c'est format

    STR_TO_DATE(NEW.DATECMDE, '%Y-%m-%d');

    DATECMDE est une chaine de caractère et '%Y-%m-%d' mon format.

    Bon maintenant j'ai du rater un truc ?

    Merci

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 110
    Points : 28 435
    Points
    28 435
    Par défaut
    Citation Envoyé par MySQL
    #1411 - Incorrect datetime value: '21/12/2020' for function str_to_date

  5. #5
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    Je n'arrive pas a comprendre cette valeur '21/12/2020' c'est le contenu de NEW.DATECMDE qui est string !
    faut il faire une conversion avant de le passer dans la fonction ?

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 110
    Points : 28 435
    Points
    28 435
    Par défaut
    Penses-tu que '21/12/2020' correspond au format '%Y-%m-%d' ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    ok je vais relire la documentation.
    Merci

  8. #8
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    ok je pense avoir trouvé :

    l'erreur était sur le format comme vous l'avez mentionnez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET NEW.DATECOM = str_to_date(NEW.DATECMDE,'%d/%m/%Y');
    Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/01/2020, 23h03
  2. Réponses: 18
    Dernier message: 12/07/2019, 22h59
  3. Problème avec la fonction set_param dans matlabrc
    Par imene_t1 dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/11/2007, 12h14
  4. [XSLT]Probléme avec une fonction php dans un fichier xsl!
    Par Mo_Poly dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/10/2007, 07h32
  5. Problème avec la fonction rechdom dans un état
    Par ustilago dans le forum IHM
    Réponses: 4
    Dernier message: 30/08/2006, 15h06

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