Comme indiqué dans Littéraux de date et d'heure :
MySQL reconnaît
DATETIMEetTIMESTAMPvaleurs dans ces formats :
Sous forme de chaîne au format
'YYYY-MM-DD HH:MM:SS'ou'AA-MM-JJ HH:MM:SS'format. Une syntaxe "assouplie" est également autorisée ici :n'importe quel caractère de ponctuation peut être utilisé comme délimiteur entre les parties de date ou les parties d'heure. Par exemple,'2012-12-31 11:30:45','2012^12^31 11+30+45','2012/12/31 11*30*45', et'example@sqldat.com @31 11^30^45'sont équivalents.Sous forme de chaîne sans délimiteurs dans l'un ou l'autre
'YYYYMMDDHHMMSS'ou'AAMMJJHHMMSS'format, à condition que la chaîne ait un sens en tant que date. Par exemple,'20070523091528'et'070523091528'sont interprétés comme'2007-05-23 09:15:28', mais'071122129015'est illégal (il a une partie minute absurde) et devient'0000-00-00 00:00:00'.Sous la forme d'un nombre au format
AAAAMMJJHHMMSSouAAMMJJHHMMSSformat, à condition que le nombre ait un sens en tant que date. Par exemple,19830905132800et830905132800sont interprétés comme'1983-09-05 13:28:00'.Un
DATETIMEouTIMESTAMPLa valeur peut inclure une fraction de seconde de fin avec une précision allant jusqu'à la microseconde (6 chiffres). Bien que cette partie fractionnaire soit reconnue, elle est supprimée des valeurs stockées dansDATETIMEouTIMESTAMPColonnes. Pour plus d'informations sur la prise en charge des secondes fractionnaires dans MySQL, consultez Section 11.3.6, « Fractional Secondes en valeurs de temps" .
Votre date littérale de '2012-08-24T17:29:11.683Z' ne correspond à aucun de ces formats ; suggérons soit—
-
utilisez à la place le
toLocaleFormat()(assurez-vous que le fuseau horaire de la connexion MySQL correspond à celui des paramètres régionaux de Node.js) :if s instanceof Date return s.toLocaleFormat("%Y-%m-%d %H:%M:%S") -
utilisez la
valueOf()méthode pour obtenir la valeur du temps en millisecondes depuis l'époque UNIX, diviser par1000(pour obtenir secondes depuis l'époque UNIX) et passer par MySQLFROM_UNIXTIME()fonction.