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 .

Señorita rosy
fuente
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

John Woo
fuente
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 ...
Frank Thomas
fuente
17

Tratar:

SELECT DATE(`date_time_field`) AS date_part, TIME(`date_time_field`) AS time_part FROM `your_table`
Sudhir Bastakoti
fuente
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
0

Simplemente,
SELECCIONE HORA (nombre_columna), FECHA (nombre_columna)

Thushara Buddhika
fuente
¿Qué tal DATE?
tcadidot0
-2

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

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

Swapnil
fuente
6
Oye, estás dando una solución de php, no de sql :)
maq