2010-08-13 6 views
1

J'ai un champ de type date dans MySQL. Lorsque j'essaie d'insérer une date dans ce champ avec PHP en utilisant la requête suivante, il stocke 0000-00-00 dans ce champ.Comment insérer la date (y-m-d) dans la base de données MySQL?

Par exemple:

UPDATE test SET dob=2000-09-20 WHERE id=3 
+4

2000-09-20 = 1971 ce qui n'est pas une valeur valide;) –

Répondre

6

la date ne citer.

UPDATE test SET dob='2000-09-20' WHERE id=3 

Dans votre requête ... 2000-09-20 ... sera interprétée comme une expression mathématique. Le résultat est un nombre, 1971. Dans le champ date et heure, un nombre sera zerofilled à un nombre de 6, 8, 12 ou 14 chiffres, donc 1971 deviendra 001971. Ce nombre est alors interprété comme format YYMMDD, donc cela signifie "année 00 mois 19 jour 71", ce qui est invalide. Donc, la valeur spéciale 0000-00-00 est stockée.

+0

ouchhhhhhhhhhhhh – Awan

3

Normalement, vous utiliseriez '2000-09-20' comme valeur à insérer. Comment votre système fait-il la distinction entre ce que vous avez et la valeur entière (non datée) de 1971, qui est ce que vous obtiendriez en soustrayant 9 et 20 de 2000?

UPDATE test SET dob = '2000-09-20' WHERE id = 3 

Voir here pour plus de détails.

Questions connexes