Jak je uvedeno v Literály o datu a čase :
MySQL rozpoznává
DATETIME
aTIMESTAMP
hodnoty v těchto formátech:
Jako řetězec v
'RRRR-MM-DD HH:MM:SS'
nebo'RR-MM-DD HH:MM:SS'
formát. I zde je povolena „uvolněná“ syntaxe:Jako oddělovač mezi částmi data nebo času lze použít jakýkoli interpunkční znak. Například'2012-12-31 11:30:45'
,'2012^12^31 11+30+45'
,'2012/12/31 11*30*45'
a'[email protected] @31 11^30^45'
jsou ekvivalentní.Jako řetězec bez oddělovačů v
'RRRRMMDDHHMMSS'
nebo'YYMMDDHHMMSS'
formátu za předpokladu, že řetězec dává smysl jako datum. Například'20070523091528'
a'070523091528'
jsou interpretovány jako'2007-05-23 09:15:28'
, ale'071122129015'
je nezákonné (má nesmyslnou minutovou část) a stává se'0000-00-00 00:00:00'
.Jako číslo buď v
RRRRMMDDHHMMSS
neboRRMMDDHHMMSS
formátu za předpokladu, že číslo dává smysl jako datum. Například19830905132800
a830905132800
jsou interpretovány jako'1983-09-05 13:28:00'
.A
DATETIME
neboTIMESTAMP
hodnota může zahrnovat koncovou část ve zlomcích sekund s přesností až na mikrosekundy (6 číslic). Přestože je tato zlomková část rozpoznána, je vyřazena z hodnot uložených doDATETIME
neboTIMESTAMP
sloupců. Informace o podpoře zlomkových sekund v MySQL naleznete v oddíl 11.3.6, „Zlomkové Sekundy v časových hodnotách” .
Váš datový literál z '2012-08-24T17:29:11.683Z'
nevyhovuje žádnému z těchto formátů; navrhněte vám buď –
-
použijte místo toho objekt Node.js Date
toLocaleFormat()
metoda (ujistěte se, že časové pásmo připojení MySQL odpovídá místnímu nastavení Node.js):if s instanceof Date return s.toLocaleFormat("%Y-%m-%d %H:%M:%S")
-
použijte objekt Node.js Date
valueOf()
metoda k získání hodnoty času v milisekundách od epochy UNIX vydělte1000
(abyste získali sekundy od epochy UNIX) a projít přes MySQLFROM_UNIXTIME()
funkce.