ist es mySQL Funktion ein Datum von Format dd.mm.yy zu YYYY-MM-DD-Format konvertieren?SQL-Datumsformat konvertieren? [Tt.mm.jj bis YYYY-MM-DD]
zum Beispiel 03.09.13 -> 2013-09-03
.
ist es mySQL Funktion ein Datum von Format dd.mm.yy zu YYYY-MM-DD-Format konvertieren?SQL-Datumsformat konvertieren? [Tt.mm.jj bis YYYY-MM-DD]
zum Beispiel 03.09.13 -> 2013-09-03
.
Da Ihr Eingang ist eine Zeichenkette in Form 03.09.13
, werde ich annehmen (seit heute 3 September, 2013), dass es dd-mm-yy ist. Sie können es zu einem Datum STR_TO_DATE
mit konvertieren:
STR_TO_DATE(myVal, '%d.%m.%y')
Dann können Sie es formatieren in einen String zurück DATE_FORMAT
mit:
DATE_FORMAT(STR_TO_DATE(myVal, '%d.%m.%y'), '%Y-%m-%d')
Beachten Sie, dass das Jahr %y
(Kleinbuchstaben "y") in STR_TO_DATE
und %Y
(Großbuchstaben "Y") in DATE_FORMAT
. Die Kleinschreibung ist für zweistellige Jahre und die Großschreibung für vierstellige Jahre.
DATUM_FORMAT (STR_TO_DATE (myVal,'% d.% M.% Y '),'% Y-% m-% d ') Y ist Großbuchstabe –
Rajavel - es ist ein Kleinbuchstabe "y" in der ersten, weil die Eingabezeichenfolge ein 2-stelliges Jahr hat ('03.09.13'). Im zweiten Fall handelt es sich um einen Großbuchstaben, so dass die Ausgabe ein vierstelliges Jahr ist ("2013-09-03"). –
Danke für mich klar zu machen .. –
Verwenden
SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))
Fiddle demo.
Mehr über Formate, die Sie in der entsprechenden manual page lesen kann. Tipp: Wenn es sich um einen Konvertierungswert aus einem Nicht-Datum-Zeit-Feld handelt, ist es besser, stattdessen den Datentyp DATUM/DATETIME zu verwenden. Dies ist jedoch eine schlechte Idee mit Daten über String-Funktionen zu arbeiten. Oben gibt es einen netten Trick mit STR_TO_DATE
(wird diesen Code nicht wiederholen, aktualisiert, um besser zu passen)
Funktioniert nicht, 'DATE_FORMAT' erfordert das Eingabedatum trotzdem im Y-m-d-Format. Ihre Anfrage (wenn Sie es ausführen) wird '2003-09-13', offensichtlich inkorrekt zurückgeben – Lee
Ja, notiert (nach dem Senden, leider) - aktualisiert. –
Reverted meine Stimme zu einem upvote, nur weil ich nicht auf diese Weise dachte. Nicht etwas, das ich persönlich empfehlen würde (wie ich sicher bin, dass Sie auch nicht), aber angesichts seiner einzigartigen Anforderungen, scheint die einzige Möglichkeit zu sein, es zu tun. – Lee
Daten werden unter Verwendung eines internen Formats gespeichert. Sie können die Funktion date_format()
verwenden, um sie unter Verwendung einer Vielzahl von Formaten in eine Zeichenfolge zu konvertieren. Denn deine insbesondere:
select date_format(`date`, '%Y-%m-%d')
Ist Ihre Eingabe ein Datum Typ, oder ist es eine Zeichenfolge, die buchstäblich '03.09.13' ist? –
@ ppeterka66 Ja, und hier zu fragen bedeutet wahrscheinlich, dass ich keine Antwort dafür gefunden habe. – user2216190
@EdGibbs es ist eine Zeichenfolge. – user2216190