J'essaie d'insérer la date dans une table mysql. La requête SQL que j'ai utilisée pour créer la table est la suivante:
CREATE TABLE IF NOT EXISTS DDD(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY UNIQUE,
datecolumn DATE NOT NULL ,
open FLOAT,
high FLOAT,
low FLOAT,
close FLOAT,
volume INT)
J'insère les données avec l'instruction SQL suivante:
INSERT INTO DDD(datecolumn, open, high, low, close, volume)
VALUES(2011-05-26, 12.09, 13.31, 12.05, 13.09, 1293441)
Après cela, lorsque je sélectionne et affiche les données, les entrées de la colonne de données sont
0000-00-00
J'ai essayé la solution de
l'importation de CSV dans la table MySQL laisse les champs de date comme 0000-00-
... mais cela a entraîné l'erreur suivante:
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'datecolumn DATE' at line 1
après la requête suivante,
ALTER TABLE db.DDD MODIFY datecolumn datecolumn DATE;
Je suis novice en SQL et j'apprends maintenant. Quelqu'un pourrait-il faire la lumière, qu'est-ce que je fais mal?
Mettez la date entre guillemets:
INSERT INTO DDD(datecolumn, open, high, low, close, volume)
VALUES('2011-05-26', 12.09, 13.31, 12.05, 13.09, 1293441)
MySQL aura fait silencieusement quelques mathématiques avec 2011-05-26
et a mis sa culotte dans une torsion.
Cela vous avertit cependant:
mysql> insert into d VALUES(2011-05-26);
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+-----------------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------------+
| Warning | 1264 | Out of range value for column 'datecolumn' at row 1 |
+---------+------+-----------------------------------------------------+
1 row in set (0.00 sec)
mysql>
Sans utiliser de guillemets, MySQL insère essentiellement l'entier 1980 (qui est 2011 minus 05 minus 26
) comme une date, car il la traite comme des mathématiques:
mysql> select 2011-05-26;
+------------+
| 2011-05-26 |
+------------+
| 1980 |
+------------+
1 row in set (0.00 sec)
mysql>