phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Horodatage ISO 8601 pour la base de données MySQL :valeur de date/heure MySQL incorrecte

Comme indiqué dans Littéraux de date et d'heure :

MySQL reconnaît DATETIME et TIMESTAMP valeurs dans ces formats :

  • Sous forme de chaîne au format 'YYYY-MM-DD HH:MM:SS' ou 'AA-MM-JJ HH:MM:SS' format. Une syntaxe "assouplie" est également autorisée ici :n'importe quel caractère de ponctuation peut être utilisé comme délimiteur entre les parties de date ou les parties d'heure. Par exemple, '2012-12-31 11:30:45' , '2012^12^31 11+30+45' , '2012/12/31 11*30*45' , et '[email protected] @31 11^30^45' sont équivalents.

  • Sous forme de chaîne sans délimiteurs dans l'un ou l'autre 'YYYYMMDDHHMMSS' ou 'AAMMJJHHMMSS' format, à condition que la chaîne ait un sens en tant que date. Par exemple, '20070523091528' et '070523091528' sont interprétés comme '2007-05-23 09:15:28' , mais '071122129015' est illégal (il a une partie minute absurde) et devient '0000-00-00 00:00:00' .

  • Sous la forme d'un nombre au format AAAAMMJJHHMMSS ou AAMMJJHHMMSS format, à condition que le nombre ait un sens en tant que date. Par exemple, 19830905132800 et 830905132800 sont interprétés comme '1983-09-05 13:28:00' .

Un DATETIME ou TIMESTAMP La valeur peut inclure une fraction de seconde de fin avec une précision allant jusqu'à la microseconde (6 chiffres). Bien que cette partie fractionnaire soit reconnue, elle est supprimée des valeurs stockées dans DATETIME ou TIMESTAMP Colonnes. Pour plus d'informations sur la prise en charge des secondes fractionnaires dans MySQL, consultez Section 11.3.6, « Fractional Secondes en valeurs de temps" .

Votre date littérale de '2012-08-24T17:29:11.683Z' ne correspond à aucun de ces formats ; suggérons soit—

  • utilisez à la place le toLocaleFormat() (assurez-vous que le fuseau horaire de la connexion MySQL correspond à celui des paramètres régionaux de Node.js) :

      if s instanceof Date
             return s.toLocaleFormat("%Y-%m-%d %H:%M:%S")
    
  • utilisez la valueOf() méthode pour obtenir la valeur du temps en millisecondes depuis l'époque UNIX, diviser par 1000 (pour obtenir secondes depuis l'époque UNIX) et passer par MySQL FROM_UNIXTIME() fonction.