Como se indica en Literales de fecha y hora :
MySQL reconoce DATETIME
y TIMESTAMP
valores en estos formatos:
-
Como una cadena en
'YYYY-MM-DD HH:MM:SS'
o'AA-MM-DD HH:MM:SS'
formato. Aquí también se permite una sintaxis "relajada":se puede usar cualquier carácter de puntuación como delimitador entre las partes de la fecha o la hora. Por ejemplo,'2012-12-31 11:30:45'
,'2012^12^31 11+30+45'
,'2012/12/31 11*30*45'
y'[email protected] @31 11^30^45'
son equivalentes. -
Como una cadena sin delimitadores en
'YYYYMMDDHHMMSS'
o'AAMMDDHHMMSS'
formato, siempre que la cadena tenga sentido como una fecha. Por ejemplo,'20070523091528'
y'070523091528'
se interpretan como'2007-05-23 09:15:28'
, pero'071122129015'
es ilegal (tiene una parte de minutos sin sentido) y se convierte en'0000-00-00 00:00:00'
. -
Como un número en
YYYYMMDDHHMMSS
oAAMMDDHHMMSS
formato, siempre que el número tenga sentido como fecha. Por ejemplo,19830905132800
y830905132800
se interpretan como'1983-09-05 13:28:00'
.
Un DATETIME
o TIMESTAMP
El valor puede incluir una parte final de segundos fraccionarios con una precisión de hasta microsegundos (6 dígitos). Aunque se reconoce esta parte fraccionaria, se descarta de los valores almacenados en DATETIME
o TIMESTAMP
columnas Para obtener información sobre el soporte de fracciones de segundo en MySQL, consulte Sección 11.3.6, “Fractional Segundos en valores de tiempo”
.
Su fecha literal de '2012-08-24T17:29:11.683Z'
no se ajusta a ninguno de estos formatos; te sugiero—
-
use en su lugar el
toLocaleFormat()
método (asegúrese de que la zona horaria de la conexión MySQL coincida con la configuración regional de Node.js):if s instanceof Date return s.toLocaleFormat("%Y-%m-%d %H:%M:%S")
-
use el
valueOf()
método para obtener el valor del tiempo en milisegundos desde la época de UNIX, dividir por1000
(para obtener segundos desde la época de UNIX) y pase a través de MySQLFROM_UNIXTIME()
función.