Conforme declarado em Literais de data e hora :
MySQL reconheceDATETIMEeTIMESTAMPvalores 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'example@sqldat.com @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 emAAAAMMDDHHMMSSouYYMMDDHHMMSSformato, desde que o número faça sentido como uma data. Por exemplo,19830905132800e830905132800são interpretados como'1983-09-05 13:28:00'.
UmDATETIMEouTIMESTAMPO 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 emDATETIMEouTIMESTAMPcolunas. 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.