Cómo separar DATE y TIME de DATETIME en MySQL


82

Estoy almacenando un campo DATETIME en una tabla. Cada valor se parece a esto: 2012-09-09 06:57:12 .

Estoy usando esta sintaxis:

   date("Y-m-d H:i:s");

Ahora, mi pregunta es, mientras obtengo los datos, ¿cómo puedo obtener la fecha y la hora por separado , usando una única consulta MySQL?

Fecha como 2012-09-09 y hora como 06:57:12 .


probablemente esté buscando DATE_FORMATy no DATEy TIMEporque le dará la fecha predeterminada si está buscando la hora y la hora predeterminada si está buscando la fecha, vea mi respuesta a continuación.
John Woo

Respuestas:


126

Puede lograrlo usando DATE_FORMAT () ( haga clic en el enlace para ver más formatos )

SELECT DATE_FORMAT(colName, '%Y-%m-%d') DATEONLY, 
       DATE_FORMAT(colName,'%H:%i:%s') TIMEONLY

Demostración de SQLFiddle


Hola, ¿Cómo conseguir el valor? ¿Puedo usar echo DATEONLYpara imprimir la fecha y echo TIMEONLYpara imprimir la hora? ¿¿O que??
Miss Rosy

@MissRosy sí, puede usar su alias ( por ejemplo, DATEONLY y TIMEONLY ) para obtener los valores que desee.
John Woo


@MissRosy de nada. lo mejor es que puede formatearlo en la forma que desee.
John Woo

@ John ... sí ... me encanta esa cosa :)
Miss Rosy

49

según la documentación de mysql, la función DATE () extraerá la parte de la fecha de un campo de fecha y hora, y TIME () para la parte de la hora. así que intentaría:

select DATE(dateTimeFeild) as Date, TIME(dateTimeFeild) as Time, col2, col3, FROM Table1 ...

17

Tratar:

SELECT DATE(`date_time_field`) AS date_part, TIME(`date_time_field`) AS time_part FROM `your_table`

esto no obtendrá el DATEy TIMEsolo como lo que el usuario está pidiendo. Dará la fecha y la hora completas con sus valores predeterminados. VENDE ESTE ENLACE
John Woo

1
se generará September, 09 2012 00:00:00-0400para FECHA y January, 01 1970 03:20:38-0500de TIEMPO
John Woo

4
bueno, según la consulta, da 2012-09-09 como date_part y 06:57:12 como parte de tiempo en mysql
Sudhir Bastakoti

@ Sudhir..Muchas gracias por responder. Esto también es correcto pero..utilizar DATE_FORMAT()te hace más flexible.
Miss Rosy

1
@MissRosy bienvenida, y sí, debería usar una solución que se adapte más y sea más flexible .. :)
Sudhir Bastakoti


-2

Solo para uso de fecha
date("Y-m-d");

y solo para uso de tiempo
date("H:i:s");


6
Oye, estás dando una solución de php, no de sql :)
maq
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.