Jak stwierdzono w Literały daty i czasu :
MySQL rozpoznaje DATETIME
i ZNACZNIK CZASU
wartości w tych formatach:
-
Jako ciąg w
'RRRR-MM-DD GG:MM:SS'
lub'RR-MM-DD GG:MM:SS'
format. Dozwolona jest również „zrelaksowana” składnia:Dowolny znak interpunkcyjny może być użyty jako ogranicznik między częściami daty lub godziny. Na przykład'2012-12-31 11:30:45'
,'2012^12^31 11+30+45'
,'2012/12/31 11*30*45'
oraz'[email protected] @31 11^30^45'
są równoważne. -
Jako ciąg bez ograniczników w
'RRRRMMDDHHMMSS'
lub'RRMMDDGGMMSS'
format, pod warunkiem, że ciąg ma sens jako data. Na przykład'20070523091528'
i'070523091528'
są interpretowane jako'2007-05-23 09:15:28'
, ale'071122129015'
jest nielegalne (ma bezsensowną część minutową) i zmienia się w'0000-00-00 00:00:00'
. -
Jako liczba w
RRRRMMDDHHMMSS
lubRRMMDDGGMMSS
format, pod warunkiem, że liczba ma sens jako data. Na przykład19830905132800
i830905132800
są interpretowane jako'1983-09-05 13:28:00'
.
DATETIME
lub ZNACZNIK CZASU
wartość może zawierać końcową część ułamków sekund z dokładnością do mikrosekund (6 cyfr). Chociaż ta część ułamkowa jest rozpoznawana, jest odrzucana z wartości przechowywanych w DATETIME
lub ZNACZNIK CZASU
kolumny. Aby uzyskać informacje na temat obsługi ułamków sekund w MySQL, zobacz Sekcja 11.3.6, „Ułamkowe Sekundy w wartościach czasu”
.
Twój literał daty to '2012-08-24T17:29:11.683Z'
nie pasuje do żadnego z tych formatów; sugeruję też—
-
zamiast tego użyj
toLocaleFormat()
metody (upewnij się, że strefa czasowa połączenia MySQL jest zgodna z lokalizacją Node.js):if s instanceof Date return s.toLocaleFormat("%Y-%m-%d %H:%M:%S")
-
użyj
valueOf()
metoda uzyskania wartości czasu w milisekundach od czasów UNIX-a, dziel przez1000
(aby uzyskać sekundy od czasów UNIX) i przechodzą przezFROM_UNIXTIME()
funkcja.