¿Cómo seleccionar solo la fecha de un campo DATETIME en MySQL?


115

Tengo una tabla en la base de datos MySQL que está configurada con DATETIME. Necesito estar SELECTen esta tabla solo por FECHA y excluyendo la hora.

¿Cómo hago SELECTen esta tabla solo con la fecha y sin pasar por la hora, incluso si esa columna específica está configurada en DATETIME?


Ejemplo

Ahora es: 2012-01-23 09:24:41

Necesito hacer un SELECTsolo para esto:2012-01-23


Respuestas:


165

SELECT DATE(ColumnName) FROM tablename;

Más sobre la función DATE () de MySQL .


Estoy tratando de hacer esto pero no funciona $ query = "SELECT * FROM Profiles WHERE date (DateReg = '". $ Date. "')";
DiegoP.

2
date (datereg) = 'dateHere'
Balaswamy Vaddeman

$ query = "SELECT * FROM Profiles WHERE date (DateReg) = '". $ date. "'"; Esto debería funcionar. Asegúrese de que ambas fechas tengan el mismo formato. Si no, formatee la fecha $ antes de usar en la cláusula "where".
Clain Dsilva

Creo que debe tener cuidado con eso porque no usará un índice en ColumnName
d0x

No olvide agregar el símbolo de acento grave `antes y después del nombre de la columna. En alguna versión de MySql, puede mostrar la fecha actual.
user2092317

40

puedes usar date_format

select DATE_FORMAT(date,'%y-%m-%d') from tablename

para la zona horaria

sql2 = "SELECT DATE_FORMAT(CONVERT_TZ(CURDATE(),'US/Central','Asia/Karachi'),'%Y-%m-%d');"

Esto funciona perfectamente porque ahora puedo seleccionar datos de ciertos días con solo tener el formato de fecha '% d'.
mjwrazor

seleccione DATE_FORMAT (fecha, '% Y-% m-% d') del nombre de la tabla, la pequeña "y" no devuelve el año, use la mayúscula "Y" en su lugar
Nirav Joshi

14

Puedes usar select DATE(time) from appointment_detailssolo para la fecha

o

Puedes usar select TIME(time) from appointment_detailssolo por tiempo


13

Intente usar
para hoy:

SELECT * FROM `tbl_name` where DATE(column_name) = CURDATE()


para la fecha seleccionada:

SELECT * FROM `tbl_name` where DATE(column_name) = DATE('2016-01-14')

2020: ¡Gracias amigo!
MarcoZen

10

En MYSQL tenemos una función llamada DATE_FORMAT (fecha, formato) . En su caso, su declaración de selección será así: -

SELECT DATE_FORMAT(dateTimeFieldName,"%a%m%Y") as dateFieldName FROM table_name

Para obtener más información sobre las funciones FECHA y HORA de Mysql, haga clic aquí.


6

Simplemente puedes hacer

SELECT DATE(date_field) AS date_field FROM table_name

6

Intenté hacer una SELECT DATE(ColumnName), sin embargo, esto no funciona para las TIMESTAMPcolumnas porque están almacenadas en UTC y se usa la fecha UTC en lugar de convertir a la fecha local. Necesitaba seleccionar filas que estaban en una fecha específica en mi zona horaria, por lo que combinando mi respuesta a esta otra pregunta con la respuesta de Balaswamy Vaddeman a esta pregunta , esto es lo que hice:

Si está almacenando fechas como DATETIME

Solo haz SELECT DATE(ColumnName)

Si está almacenando fechas como TIMESTAMP

Cargue los datos de la zona horaria en MySQL si aún no lo ha hecho. Para servidores Windows, consulte el enlace anterior. Para servidores Linux, FreeBSD, Solaris y OS X, haría lo siguiente:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Luego formatee su consulta de esta manera:

SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))

También puede poner esto en la WHEREparte de la consulta como esta (pero tenga en cuenta que los índices en esa columna no funcionarán):

SELECT * FROM tableName
WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'

(Obviamente, sustituya America/New_Yorkpor su zona horaria local).


La única excepción a esto es si su zona horaria local es GMT y no tiene horario de verano porque su hora local es la misma que UTC.


3

Prueba SELECT * FROM Profiles WHERE date(DateReg)=$datedónde está $ fecha en aaaa-mm-dd

Alternativamente SELECT * FROM Profiles WHERE left(DateReg,10)=$date

Salud


3

Puedes probar esto:

SELECT CURDATE();

Si marca lo siguiente:

SELECT NOW(); SELECT DATE(NOW()); SELECT DATE_FORMAT(NOW(),'%Y-%m-%d');

Puedes ver que lleva mucho tiempo.




1

Utilizar DATE_FORMAT

select DATE_FORMAT(date,'%d') from tablename =>Date only

ejemplo:

select DATE_FORMAT(`date_column`,'%d') from `database_name`.`table_name`;

1
SELECT DATE_FORMAT(NOW() - INTERVAL FLOOR(RAND() * 14) DAY,'%Y-%m-%d');

Este se puede usar para obtener la fecha en formato 'aaaa-mm-dd'.


1

si la columna de tiempo está en la marca de tiempo, obtendrá el valor de fecha de esa marca de tiempo usando esta consulta

SELECT DATE(FROM_UNIXTIME(time)) from table 

0

Con el interés de poner realmente una solución funcional a esta pregunta:

SELECT ... WHERE `myDateColumn` >= DATE(DATE_FORMAT(NOW(),'%Y-%m-%d'));

Obviamente, puede cambiar la función NOW () a cualquier fecha o variable que desee.

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.