Wie konvertiere ich einen String in MySQL in ein Datum?

149

Ich habe eine stringSpalte, die als dateund fungiert, und ich möchte sie als auswählen date.

Ist es möglich?

Mein Beispieldatenformat wäre; month/day/year->12/31/2011

Joseph Lafuente
quelle

Antworten:

258

Wie bei MySQL gesagt wurde , können Sie eine Zeichenfolgenspalte mit Datumstext als Datumsfeld verwenden

SELECT  STR_TO_DATE(yourdatefield, '%m/%d/%Y')
FROM    yourtable

Sie können diese Datumszeichenfolgen auch in WHEREKlauseln behandeln. Beispielsweise

SELECT whatever
  FROM yourtable
 WHERE STR_TO_DATE(yourdatefield, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY

Auf diese Weise können Sie alle Arten von Datums- / Zeitlayouts verarbeiten. Bitte beachten Sie die Formatangaben für die DATE_FORMAT()Funktion , um zu sehen , was Sie in den zweiten Parameter setzen können STR_TO_DATE().

Bluefoot
quelle
6
Ich denke, es sollte Intervall 7 Tage statt Tage sein
Feras Odeh
1
Ich habe eine Zeichenspalte wie das Format "TT-MMM-JJJJ". Wie frage ich im Format "TT-MM-JJJJ" ab?
MAX
51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')
Bala R.
quelle
Welches Datum wird als TT / MM / JJJJ-Format wie 31.11.1015 gespeichert?
Vipul Hadiya
2
@VipulHadiya Ändern Sie die Zeichenfolge für das Datumsformat %d/%m/%Yso STR_TO_DATE('31/11/1015', '%d/%m/%Y'), dass die Ausgabe YYYY-MM-DDals DATE Datentyp formatiert wird .
Fyrye
1
Nur-Code-Antworten sind in StackOverflow von geringem Wert. Bitte verbessern Sie diese richtige Antwort.
Mickmackusa
10

Hier sind zwei weitere Beispiele.

Um Tag, Monat und Jahr auszugeben, können Sie Folgendes verwenden:

select STR_TO_DATE('14/02/2015', '%d/%m/%Y');

Welches produziert:

2015-02-14

Um auch die Zeit auszugeben, können Sie Folgendes verwenden:

select STR_TO_DATE('14/02/2017 23:38:12', '%d/%m/%Y %T');

Welches produziert:

2017-02-14 23:38:12

Aalhanan
quelle