phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Carimbo de data e hora ISO 8601 para banco de dados MySQL:valor de data e hora do MySQL incorreto


Conforme declarado em Literais de data e hora :

MySQL reconhece DATETIME e TIMESTAMP 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 em AAAAMMDDHHMMSS ou YYMMDDHHMMSS formato, desde que o número faça sentido como uma data. Por exemplo, 19830905132800 e 830905132800 são interpretados como '1983-09-05 13:28:00' .

Um DATETIME ou TIMESTAMP 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 em DATETIME ou TIMESTAMP 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, use toLocaleFormat() (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 o valueOf() método para obter o valor do tempo em milissegundos desde a época do UNIX, divida por 1000 (para obter segundos desde a época do UNIX) e passar pelo FROM_UNIXTIME() função.