come convertire una stringa fino ad oggi in mysql?


149

Ho una stringcolonna che funge da a datee voglio selezionarla come a date.

È possibile?

Il mio formato di dati di esempio sarebbe; month/day/year->12/31/2011

Risposte:


258

Come è stato detto in MySQL , puoi usare una colonna stringa con il testo della data come campo della data

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

Puoi anche gestire queste stringhe di date nelle WHEREclausole. Per esempio

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

In questo modo è possibile gestire tutti i tipi di layout di data / ora. Fare riferimento agli identificatori di formato per la DATE_FORMAT()funzione per vedere cosa è possibile inserire nel secondo parametro di STR_TO_DATE().


6
Penso che dovrebbe essere INTERVALLO 7 GIORNI anziché GIORNI
Feras Odeh

1
Ho una colonna di caratteri come il formato "gg-mmmm-aaaa". Come si esegue una query nel formato "gg-mm-aaaa"?
MAX

51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')

Qual è la data memorizzata nel formato GG / MM / AAAA come il 31/11/1015?
Vipul Hadiya,

2
@VipulHadiya modifica la stringa del formato della data in %d/%m/%Ymodo da STR_TO_DATE('31/11/1015', '%d/%m/%Y')tenere presente che l'output sarà in YYYY-MM-DDformato come DATE tipo di dati.
Fyrye,

1
le risposte di solo codice hanno un valore basso su StackOverflow. Per favore, migliora questa risposta corretta.
Mickmackusa,


10

Ecco altri due esempi.

Per generare il giorno, il mese e l'anno, puoi usare:

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

Che produce:

2015/02/14

Per generare anche l'ora, è possibile utilizzare:

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

Che produce:

14/02/2017 23:38:12

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.