2011-10-07 23 views
11

Usar PHP y MySQL. En mi tabla, hay un campo de fecha (datetime) registrado por la función NOW() sql. El valor de ejemplo de los datos en este campo es 2010-10-07 10:57:36. ¿Cómo puedo SELECCIONAR todos los datos que día-mes-año es hoy? Intento utilizar código como abajo:MySQL ¿Cómo SELECCIONAR datos de la tabla que grabó hoy?

SELECT * FROM table WHERE date=???? 

Respuesta

17

SELECT * FROM table where DATE(date)=CURDATE()

+1

La solución de Kaivosukeltaja podría ser mejor desde el punto de rendimiento, aunque –

+1

Msg 195, nivel 15, estado 10, línea 6 'CURDATE' no es un nombre de función incorporado reconocido. –

+1

'FECHA' no es un nombre de función incorporado reconocido. –

-2

uso entre.

select * from table date between '2010-10-06' and '2010-10-08'; 
+1

Uh..today significa el día en que el usuario abra mi página, no el 2010-10-08. Por cierto, gracias denolk. –

26

Prueba esto:

SELECT * FROM table WHERE date > CURDATE(); 

CURDATE() devolverá la fecha actual como 2011-10-07 que será lanzado a 2011-10-07 00:00:00 al comparar datetime s a ella.

Tenga en cuenta que si utiliza DATE(date) = CURDATE() va a ejecutar una conversión de la fecha de cada fila de la tabla, lo que va a ser muy malo para su perfomance de si tiene muchas filas y/o necesita para ejecutar la consulta a menudo. También asegúrese de tener un índice en date; de lo contrario, ambos métodos serán incluso más lentos.

+0

el punto y coma podría romper esto si está insertando encima del final de su consulta –

+0

'CURDATE' no es un nombre de función incorporado reconocido. –

+0

@PradeepKumarPrabaharan: Eso no suena como un error de MySQL. ¿Tal vez estás ejecutando MSSQL? Intente con 'GETDATE()' en su lugar. – Kaivosukeltaja

3
SELECT * FROM tableName WHERE DATE(fieldDate) = DATE(NOW()); 
2

La función date_format le permite cambiar fácilmente entre diferentes niveles de detalle:

Seleccionar todo, desde el mismo día:

select * from table 
where date_format(date, '%Y-%m-%d') = date_format(now(), '%Y-%m-%d'); 

Desde el mismo mes:

select * from table 
where date_format(date, '%Y-%m') = date_format(now(), '%Y-%m'); 

Desde el mismo año:

select * from table 
where date_format(date, '%Y') = date_format(now(), '%Y'); 

De la misma hora:

select * from table 
where date_format(date, '%Y-%m-%d %H') = date_format(now(), '%Y-%m-%d %H'); 

y así sucesivamente.

+0

'date_format' no es un nombre de función incorporado reconocido. –

1

probar este

SELECT * FROM table WHERE DATE(my_date)=DATE(now()) 

my_date -> column name 
+1

Esto es idéntico a una respuesta dada hace 5 años .. –

0

uso algo como esto funciona exactamente en mi código (base de datos de acceso):

select * from Table t where t.column>=Date() and t.column< Date() + 1 
1
SET @day = '2017-12-12' ; 

SELECT * FROM table WHERE dateColumn BETWEEN DATE(@day) AND DATE_ADD(DATE(@day), INTERVAL 1 DAY) ; 
Cuestiones relacionadas