51 votes

Formats de date MySQL - difficulté à insérer une date

J'essaie d'approfondir une question que j'ai posée hier, où je voulais savoir comment interroger une date dans un format différent. Maintenant, j'essaie de faire une insertion en utilisant cette méthode (voir ci-dessous) mais je n'arrive pas à la faire fonctionner. J'ai consulté le manuel, mais il n'est pas adapté aux débutants !

INSERT INTO custorder VALUES ('Kevin','yes'), STR_TO_DATE('1-01-2012', '%d-%m-%Y');

134voto

ypercube Points 62714

Mettez la date entre guillemets simples et déplacez les parenthèses (après l'élément 'yes' ) jusqu'à la fin :

INSERT INTO custorder 
  VALUES ('Kevin', 'yes' , STR_TO_DATE('1-01-2012', '%d-%m-%Y') ) ;
                        ^                                     ^
---parenthesis removed--|                and added here ------|

Mais vous pouvez toujours utiliser les dates sans STR_TO_DATE() il suffit d'utiliser la fonction (Y-m-d) '20120101' o '2012-01-01' format. Consultez la documentation de MySQL : Les littéraux de date et d'heure

INSERT INTO custorder 
  VALUES ('Kevin', 'yes', '2012-01-01') ;

12voto

Gleeb Points 156

On dirait que vous n'avez pas encapsulé votre chaîne correctement. Essayez ceci :

INSERT INTO custorder VALUES ('Kevin','yes'), STR_TO_DATE('1-01-2012', '%d-%m-%Y');

Vous pouvez également procéder comme suit, mais ce n'est pas recommandé. Assurez-vous d'utiliser STR_TO-DATE car lorsque vous développez des applications Web, vous devez convertir explicitement les chaînes en dates, ce qui est ennuyeux. Utilisez la première.

INSERT INTO custorder VALUES ('Kevin', 'yes'), '2012-01-01' ;

Je ne suis pas sûr que le SQL ci-dessus soit valide, cependant, et vous pourriez vouloir déplacer la partie date dans les parenthèses. Si vous pouvez fournir l'erreur exacte que vous obtenez, je pourrais être en mesure de vous aider plus directement à résoudre le problème.

10voto

Sachin Mallade Points 111

Le format de la date pour la requête d'insertion mysql est le suivant YYYY-MM-DD

exemple :

INSERT INTO table_name (date_column) VALUE ('YYYY-MM-DD');

2voto

Kulasangar Points 5034

Un complément aux réponses précédentes puisque j'ai rencontré cette préoccupation :

Si vous voulez vraiment insérer quelque chose comme 24-May-2005 à votre DATE colonne, vous pourriez faire quelque chose comme ça :

INSERT INTO someTable(Empid,Date_Joined)
VALUES
    ('S710',STR_TO_DATE('24-May-2005', '%d-%M-%Y'));

Dans la requête ci-dessus, veuillez noter que s'il s'agit de May (c'est-à-dire le mois en lettres) le format doit être le suivant %M .

NOTE : J'ai essayé cela avec la dernière version de MySQL 8.0 et cela fonctionne !

2voto

George Fisher Points 521

Lorsque vous utilisez une variable de type chaîne en PHP contenant une date, la variable doit être entourée de guillemets simples :

$NEW_DATE = '1997-07-15';
$sql = "INSERT INTO tbl (NEW_DATE, ...) VALUES ('$NEW_DATE', ...)";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X