MySQL - comment analyser une valeur de chaîne au format DATETIME dans une instruction INSERT?

J'ai un MySQL database, avec une colonne de type date DATETIME.

Je reçois une valeur de chaîne pour une date / heure à partir d'une application externe. Cette valeur de chaîne ressemble à ceci:

'5/15/2012 8:06:26 AM'

MySQL lance une erreur sur L'insertion: "Error. Incorrect datetime value". Ma solution de contournement consistait à changer le type de colonne en VARCHAR, ce qui fonctionne, mais j'ai vraiment besoin des données comme date et heure appropriées pour une utilisation future.

J'ai fait des recherches sur le formatage accepté pour les valeurs MySQL DATETIME, et j'ai trouvé que MySQL veut le format DATETIME comme 'YYYY-MM-DD HH:MM:SS'.

Je ne peux pas changer l'application externe pour reformater la chaîne date / heure dans un format, donc ma seule chance est de la gérer.

Ce que je dois faire, je pense, est d'analyser la chaîne existante, en utilisant MySQL syntax, à l'intérieur de mon instruction INSERT, mais je ne sais pas comment faire cela. J'ai une idée que je dois utiliser une clause SELECT, peut-être STR_TO_DATE, en combinaison avec ma déclaration INSERT.

Voici ma déclaration D'insertion actuelle. J'ai supprimé les autres champs cela ne cause pas de problème, juste pour rendre l'exemple propre.

INSERT INTO tblInquiry (fldInquiryReceivedDateTime) VALUES ('5/15/2012 8:06:26')

Merci pour toute aide, je suis un débutant SQL.

36
demandé sur sarwar026 2012-05-17 16:56:02

1 réponses

Utiliser MySQL STR_TO_DATE() Fonction pour analyser la chaîne que vous essayez d'insérer:

INSERT INTO tblInquiry (fldInquiryReceivedDateTime) VALUES
  (STR_TO_DATE('5/15/2012 8:06:26 AM', '%c/%e/%Y %r'))
78
répondu eggyal 2012-05-17 13:04:32