phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

ISO 8601-Zeitstempel für MySQL-Datenbank:MySQL Falscher datetime-Wert

Wie in Datums- und Zeitliterale angegeben :

MySQL erkennt DATETIME und TIMESTAMP Werte in diesen Formaten:

  • Als Zeichenfolge in entweder 'YYYY-MM-DD HH:MM:SS' oder 'JJ-MM-TT HH:MM:SS' Format. Auch hier ist eine „entspannte“ Syntax erlaubt:Als Trennzeichen zwischen Datums- oder Zeitteilen darf ein beliebiges Satzzeichen verwendet werden. Beispiel:'2012-12-31 11:30:45' , '2012^12^31 11+30+45' , '2012/12/31 11*30*45' , und '[email protected] @31 11^30^45' sind gleichwertig.

  • Als Zeichenfolge ohne Trennzeichen in beiden 'YYYYMMDDHHMMSS' oder 'YYMMDDHHMMSS' Format, sofern der String als Datum sinnvoll ist. Beispiel:'20070523091528' und '070523091528' werden als '2007-05-23 09:15:28' interpretiert , aber '071122129015' ist illegal (es hat einen unsinnigen Minutenteil) und wird zu '0000-00-00 00:00:00' .

  • Als Zahl entweder in YYYYMMDDHHMMSS oder YYMMDDHHMMSS Format, sofern die Zahl als Datum sinnvoll ist. Beispiel:19830905132800 und 830905132800 werden als '1983-09-05 13:28:00' interpretiert .

Ein DATETIME oder TIMESTAMP Der Wert kann einen abschließenden Sekundenbruchteil mit einer Genauigkeit von bis zu Mikrosekunden (6 Ziffern) enthalten. Obwohl dieser Bruchteil erkannt wird, wird er von Werten verworfen, die in DATETIME oder TIMESTAMP Säulen. Informationen zur Unterstützung von Sekundenbruchteilen in MySQL finden Sie unter Abschnitt 11.3.6, „Bruchteile Sekunden in Zeitwerten“ .

Ihr Datumsliteral von '2012-08-24T17:29:11.683Z' passt in keines dieser Formate; entweder vorschlagen –

  • Verwenden Sie stattdessen das toLocaleFormat() -Methode (achten Sie darauf, dass die Zeitzone der MySQL-Verbindung mit der des Gebietsschemas von Node.js übereinstimmt):

      if s instanceof Date
             return s.toLocaleFormat("%Y-%m-%d %H:%M:%S")
    
  • Verwenden Sie den valueOf() Methode, um den Zeitwert in Millisekunden zu erhalten seit der UNIX-Epoche durch 1000 dividieren (um Sekunden zu erhalten seit der UNIX-Epoche) und durchlaufen MySQLs FROM_UNIXTIME() Funktion.