ISO-8601-Zeitstempel für MySQL-Datenbank: MySQL Falsche datetime-Wert
Fehler melden:
{ [Error: Incorrect datetime value: '2012-08-24T17:29:11.683 Z' für
die Spalte "Roboter _refreshed_at' in Zeile 1] Anzahl: 1292, sqlStateMarker:
'#', sqlState: '22007', message: 'Ungültiger datetime-Wert:
\'2012-08-24T17:29:11.683 Z\' Spalte \' robot_refreshed_at\' in Zeile
1', sql: 'INSERT INTO Benutzer
(id,name,count_moments,count_likes,count_followers,rob
ot_refreshed_at,robot_count_followers) WERTE
(\'1834084\',\'NNNyingzi\',\'5\',\
'0\',\'0\',\'2012-08-24T17:29:11.683 Z\',\'0\')', setMaxListeners:
[Funktion], emittieren: [Funktion] addListener: [Funktion] auf: [Function],
einmal: [Funktion], removeListener: [Funktion], removeAllListeners:
[Funktion], den Hörer: [Function] }
Ich dieses Stück code in meine Node.js
if s instanceof Date
return s.toISOString()
und aktualisiert Sie in der Datenbank.
Den SQL
Ausdruck einfügen folgt:
INSERT INTO users (id,name,count_moments,count_likes,count_followers,rob ot_refreshed_at,robot_count_followers) VALUES (\'1834084\',\'NNNyingzi\',\'5\',\ '0\',\'0\',\'2012-08-24T17:29:11.683Z\',\'0\')
Mache ich etwas falsch? Ich habe gerade kopiert eine Tabelle mit PHPMyAdmin
aus einer Tabelle in server.
Vielen Dank.
InformationsquelleAutor Chao Zhang | 2012-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt in Datum und Zeit Literale:
Ihre Datums-literal von
'2012-08-24T17:29:11.683Z'
passt nicht jedes dieser Formate; schlagen Sie entweder—verwenden Sie stattdessen die Node.js Date-Objekts
toLocaleFormat()
Methode (achten Sie darauf, dass die Zeitzone der MySQL-Verbindung entspricht Node.js's locale):verwenden Node.js Date-Objekts
valueOf()
Methode, um die Zeit Wert in Millisekunden seit der UNIX-Epoche, Division durch1000
(Sekunden seit der UNIX-Epoche) und pass durch die MySQL -FROM_UNIXTIME()
Funktion.MySQL
? Ich bin sicher, dass auf dem server wo ich kopiert die Tabelle aus ist, läuft einwandfrei.Meines Wissens nach nicht. Vielleicht PHPMyAdmin formatiert die Ausgabe für die Anzeige in dieser Weise, aber das format ist nicht eine gültige MySQL-datetime-literal. Sie können
STR_TO_DATE()
zum durchführen von Konvertierungen, falls erforderlich.Wenn Sie Probleme beim einstellen von datetimes mit millis und/oder Mikrosekunden Sie können deaktivieren Sie die mysql-strict-Modus (set sql_mode=")
InformationsquelleAutor eggyal
Ich finde es unter diesem link:
MySQL insert DATETIME: ist es sicher, ISO::8601-format?
Scheint es, dass das einfügen einer nach ISO8601-timestamp ist nicht sicher. Es kommt auf den parser von
MySQL
. Vielleicht verschiedene Versionen mit unterschiedlichen Methoden.Diesem Stück code liefern könnten
node.js
mit der Fähigkeit zu formatierenDate
InformationsquelleAutor Chao Zhang