¿Cómo convertir una cadena a la fecha en MySQL?

149

Tengo una stringcolumna que actúa como dateay quiero seleccionarla como a date.

¿Es posible?

Mi formato de datos de muestra sería; month/day/year->12/31/2011

Joseph Lafuente
fuente

Respuestas:

258

Como se dijo en MySQL, puede usar una columna de cadena con texto de fecha como campo de fecha .

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

También puede manejar estas cadenas de fecha en WHEREcláusulas. Por ejemplo

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

Puede manejar todo tipo de diseños de fecha / hora de esta manera. Consulte los especificadores de formato de la DATE_FORMAT()función para ver qué puede poner en el segundo parámetro de STR_TO_DATE().

pie azul
fuente
66
Creo que debería ser INTERVALO 7 DÍAS en lugar de DÍAS
Feras Odeh
1
Tengo una columna de caracteres como el formato "dd-mmm-aaaa". ¿Cómo consulto el formato "dd-mm-aaaa"?
MAX
51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')
Bala R
fuente
¿Qué fecha se almacena en formato DD / MM / AAAA como 31/11/1015?
Vipul Hadiya
2
@VipulHadiya cambia la cadena de formato de fecha a Me %d/%m/%Ygusta, así STR_TO_DATE('31/11/1015', '%d/%m/%Y')que ten en cuenta que la salida tendrá el YYYY-MM-DDformato de un DATE tipo de datos.
fyrye
1
las respuestas de solo código son de bajo valor en StackOverflow. Por favor, mejora esta respuesta correcta.
mickmackusa
10

Aquí hay otros dos ejemplos.

Para generar el día, mes y año, puede usar:

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

Que produce:

2015-02-14

Para generar también el tiempo, puede usar:

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

Que produce:

2017-02-14 23:38:12

aalhanane
fuente