mysql STR_TO_DATE
Pit
- mysql
Hallo,
warum ergibt SELECT STR_TO_DATE('24.10.2017 13:50','%d.%M.%Y %h:%i');
NULL
und nicht ein gültiges mysql-datum?
Pit
Tach!
warum ergibt
SELECT STR_TO_DATE('24.10.2017 13:50','%d.%M.%Y %h:%i');
NULL
und nicht ein gültiges mysql-datum?
Weil es bezogen auf das Muster kein gültiger Wert ist. Es wird auch eine Warnung erzeugt, die du gesondert abholen musst (kein Error, den man mit Funktionen wie mysql_error() holen könnte).
Ich weiß nicht, was die Warnung sagt, aber 13 ist jedenfalls kein gültiger Wert für %h und 10 auch nicht für %M. Siehe DATE_FORMAT().
dedlfix.
Hi dedlfix,
Ich weiß nicht, was die Warnung sagt, aber 13 ist jedenfalls kein gültiger Wert für %h und 10 auch nicht für %M. Siehe DATE_FORMAT().
Vielen Dank, das wars. Jetzt fluppt das prima.
Sag mal, bit es auch eine gegenteilige Funktion, die aus "2017-10-24 13:50:00" wieder "24.10.2017 13:50" macht? Oder muß ich da selber ran?
Pit
Tach!
Sag mal, bit es auch eine gegenteilige Funktion, die aus "2017-10-24 13:50:00" wieder "24.10.2017 13:50" macht? Oder muß ich da selber ran?
"2017-10-24 13:50:00" ist ein Literal, um ein Datum angeben zu können. Die interne Darstellung ist eine andere. Was du vermutlich möchtest, ist einen DateTime-Wert in eine beliebige String-Form zu bringen. Die Funktion DATE_FORMAT() dazu hatte ich bereits verlinkt, weil dort die Formatierzeichen beschrieben sind, die STR_TO_DATE() benötigt.
dedlfix.
Hi dedlfix,
"2017-10-24 13:50:00" ist ein Literal, um ein Datum angeben zu können. Die interne Darstellung ist eine andere. Was du vermutlich möchtest, ist einen DateTime-Wert in eine beliebige String-Form zu bringen. Die Funktion DATE_FORMAT() dazu hatte ich bereits verlinkt, weil dort die Formatierzeichen beschrieben sind, die STR_TO_DATE() benötigt.
Na dann nochmal danke. Ich hatte nur auf die Formatierungszeichen, nicht aber auf die Funktion geachtet.
Pit
Hello,
warum ergibt
SELECT STR_TO_DATE('24.10.2017 13:50','%d.%M.%Y %h:%i');
NULL
und nicht ein gültiges mysql-datum?
Gute Frage. Auch mit dem erforderlichen kleinen '%m' für die Monatszahl geht es aber trotzdem nicht.
So herum geht es:
SELECT STR_TO_DATE('20171024 12:22','%Y%m%d %H:%i');
-> 2017-10-24 12:22:00
Liebe Grüße
Tom S.
Hallo Tom,
So herum geht es:
SELECT STR_TO_DATE('20171024 12:22','%Y%m%d %H:%i'); -> 2017-10-24 12:22:00
Genau, nach dedlfix Hinweis bin ich auch auf die beiden verdrehten Buchstaben gekommen, drum danke auch an Dich.
Pit
Hello,
so auch:
SELECT STR_TO_DATE('24102017 12:22','%d%m%Y %H:%i');
-> 2017-10-24 12:22:00
und
select STR_TO_DATE('24.10.2017 13:22','%d.%m.%Y %H:%i');
-> 2017-10-24 13:22:00
geht auch.
Allerdings ging dein erster String (C&P), trotz Korrektur des %M in %m bei mir auch nicht. Das muss an den Punkten oder den % gelegen haben. Welche hattest Du denn benutzt? Bei utf8 sehen die einen Punkte und % auf dem Screen ja so aus, wie die anderen. ;-(
Liebe Grüße
Tom S.
Allerdings ging dein erster String (C&P), trotz Korrektur des %M in %m bei mir auch nicht. Das muss an den Punkten oder den % gelegen haben. Welche hattest Du denn benutzt? Bei utf8 sehen die einen Punkte und % auf dem Screen ja so aus, wie die anderen. ;-(
Ich dachte, es hätte an dem %h anstelle %H gelegen, denn per C+P und Änderung in %H ging es bei mir.
Pit
Hello,
Ich dachte, es hätte an dem %h anstelle %H gelegen, denn per C+P und Änderung in %H ging es bei mir.
Darum habe ich ja extra noch "13:22" ausprobiert. Daran lag es bei mir also nicht.
Woher kam denn der Datumsstring?
Liebe Grüße
Tom S.
Hallo
so auch:
SELECT STR_TO_DATE('24102017 12:22','%d%m%Y %H:%i'); -> 2017-10-24 12:22:00
und
select STR_TO_DATE('24.10.2017 13:22','%d.%m.%Y %H:%i'); -> 2017-10-24 13:22:00
geht auch.
Allerdings ging dein erster String (C&P), trotz Korrektur des %M in %m bei mir auch nicht. Das muss an den Punkten oder den % gelegen haben.
Nein, das lag, neben %M
statt %m
, zusätzlich an dem ursprünglich verwendeten %h
statt %H
(%h
= Stunden im 12-Stunden-Format). Werte über 12, wie die 13 im ursprünglichen Code, platzen mit %h
. Deine Beispiele funktionieren, da du %H
benutzt.
Tschö, Auge