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

Timestamp ISO 8601 per il database MySQL:MySQL Valore datetime errato

Come indicato in Valori letterali di data e ora :

MySQL riconosce DATETIME e TIMESTAMP valori in questi formati:

  • Come stringa in 'YYYY-MM-DD HH:MM:SS' o 'AA-MM-GG HH:MM:SS' formato. Anche qui è consentita una sintassi "rilassata":qualsiasi carattere di punteggiatura può essere utilizzato come delimitatore tra parti di data o parti di tempo. Ad esempio, '2012-12-31 11:30:45' , '2012^12^31 11+30+45' , '31/12/2012 11*30*45' e '[email protected] @31 11^30^45' sono equivalenti.

  • Come stringa senza delimitatori in 'YYYYMMDDHHMMSS' o 'AAMMGGDHHMMSS' format, a condizione che la stringa abbia senso come data. Ad esempio, '20070523091528' e '070523091528' sono interpretati come '2007-05-23 09:15:28' , ma '071122129015' è illegale (ha una parte minuti senza senso) e diventa '0000-00-00 00:00:00' .

  • Come numero in YYYYMMDDHHMMSS o AAMMGGHHMMSS formato, a condizione che il numero abbia senso come data. Ad esempio, 19830905132800 e 830905132800 sono interpretati come '1983-09-05 13:28:00' .

Un DATETIME o TIMESTAMP il valore può includere una parte di secondi frazionari finali con una precisione fino a microsecondi (6 cifre). Sebbene questa parte frazionaria sia riconosciuta, viene scartata dai valori memorizzati in DATETIME o TIMESTAMP colonne. Per informazioni sul supporto dei secondi frazionari in MySQL, vedere Sezione 11.3.6, «Fractional Secondi in valori temporali” .

La tua data letterale di '2012-08-24T17:29:11.683Z' non si adatta a nessuno di questi formati; suggerisci anche tu-

  • utilizzare invece l'oggetto Node.js Date toLocaleFormat() metodo (assicurati che il fuso orario della connessione MySQL corrisponda a quello delle impostazioni locali di Node.js):

      if s instanceof Date
             return s.toLocaleFormat("%Y-%m-%d %H:%M:%S")
    
  • utilizzare valueOf() metodo per ottenere il valore del tempo in millisecondi dall'epoca UNIX, dividere per 1000 (per ottenere secondi dall'epoca UNIX) e passare attraverso FROM_UNIXTIME() funzione.