sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

Marca de tiempo ISO 8601 para base de datos MySQL:MySQL valor de fecha y hora incorrecto

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 o AAMMDDHHMMSS formato, siempre que el número tenga sentido como fecha. Por ejemplo, 19830905132800 y 830905132800 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 por 1000 (para obtener segundos desde la época de UNIX) y pase a través de MySQL FROM_UNIXTIME() función.