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
oAAMMGGHHMMSS
formato, a condizione che il numero abbia senso come data. Ad esempio,19830905132800
e830905132800
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 per1000
(per ottenere secondi dall'epoca UNIX) e passare attraversoFROM_UNIXTIME()
funzione.