como converter uma string para data no mysql?

149

Eu tenho uma stringcoluna que atua como a datee quero selecioná-la como a date.

É possível?

Meu formato de dados de amostra seria; month/day/year->12/31/2011

Joseph Lafuente
fonte

Respostas:

258

Como foi dito no MySQL. Usando uma coluna de string com texto de data como um campo de data , você pode fazer

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

Você também pode manipular essas seqüências de datas em WHEREcláusulas. Por exemplo

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

Você pode lidar com todos os tipos de layouts de data / hora dessa maneira. Por favor, consulte os especificadores de formato da DATE_FORMAT()função para ver o que você pode colocar no segundo parâmetro de STR_TO_DATE().

pé azul
fonte
6
Eu acho que deve ser o intervalo de 7 dias em vez de dias
Feras Odeh
1
Eu tenho uma coluna de caracteres como o formato "dd-mmm-aaaa". Como faço para consultar o formato "dd-mm-aaaa"?
MAX
51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')
Bala R
fonte
Qual é a data armazenada no formato DD / MM / AAAA, como 31/11/1015?
Vipul Hadiya
2
@VipulHadiya altere a sequência de formato da data para %d/%m/%Yassim: STR_TO_DATE('31/11/1015', '%d/%m/%Y')Lembre-se de que a saída estará no YYYY-MM-DDformato como um DATE tipo de dados.
perfil completo de Fyrye
1
respostas somente de código são de baixo valor no StackOverflow. Por favor, melhore esta resposta correta.
mickmackusa
10

Aqui estão mais dois exemplos.

Para gerar o dia, mês e ano, você pode usar:

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

Qual produz:

14-02-2015

Para também imprimir a hora, você pode usar:

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

Qual produz:

2017-02-14 23:38:12

aalhanane
fonte