Conforme declarado em Literais de data e hora :
MySQL reconheceDATETIME
eTIMESTAMP
valores nestes formatos:
Como uma string em'AAAA-MM-DD HH:MM:SS'
ou'AA-MM-DD HH:MM:SS'
formato. Uma sintaxe “relaxada” também é permitida aqui:Qualquer caractere de pontuação pode ser usado como delimitador entre partes de data ou partes de hora. Por exemplo,'2012-12-31 11:30:45'
,'2012^12^31 11+30+45'
,'2012/12/31 11*30*45'
e'[email protected] @31 11^30^45'
são equivalentes.
Como uma string sem delimitadores em'YYYYMMDDHHMMSS'
ou'YYMMDDHHMMSS'
formato, desde que a string faça sentido como uma data. Por exemplo,'20070523091528'
e'070523091528'
são interpretados como'2007-05-23 09:15:28'
, mas'071122129015'
é ilegal (tem um minuto sem sentido) e se torna'0000-00-00 00:00:00'
.
Como um número emAAAAMMDDHHMMSS
ouYYMMDDHHMMSS
formato, desde que o número faça sentido como uma data. Por exemplo,19830905132800
e830905132800
são interpretados como'1983-09-05 13:28:00'
.
UmDATETIME
ouTIMESTAMP
O valor pode incluir uma parte de segundos fracionários à direita com precisão de até microssegundos (6 dígitos). Embora esta parte fracionária seja reconhecida, ela é descartada dos valores armazenados emDATETIME
ouTIMESTAMP
colunas. Para obter informações sobre o suporte a segundos fracionários no MySQL, consulte a Seção 11.3.6, “Fractional Valores de segundos em tempo” .
Seu literal de data de
'2012-08-24T17:29:11.683Z'
não se encaixa em nenhum desses formatos; sugiro que você também— -
em vez disso, usetoLocaleFormat()
(certifique-se de que o fuso horário da conexão do MySQL corresponde ao da localidade do Node.js):
if s instanceof Date return s.toLocaleFormat("%Y-%m-%d %H:%M:%S")
-
use ovalueOf()
método para obter o valor do tempo em milissegundos desde a época do UNIX, divida por1000
(para obter segundos desde a época do UNIX) e passar peloFROM_UNIXTIME()
função.