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'example@sqldat.com @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
RRRRMMDDHHMMSSlubRRMMDDGGMMSSformat, pod warunkiem, że liczba ma sens jako data. Na przykład19830905132800i830905132800są 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.