Comme indiqué dans Littéraux de date et d'heure :
MySQL reconnaît
DATETIME
etTIMESTAMP
valeurs 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'[email protected] @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
AAAAMMJJHHMMSS
ouAAMMJJHHMMSS
format, à condition que le nombre ait un sens en tant que date. Par exemple,19830905132800
et830905132800
sont interprétés comme'1983-09-05 13:28:00'
.Un
DATETIME
ouTIMESTAMP
La 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 dansDATETIME
ouTIMESTAMP
Colonnes. 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.