2010-01-25 12 views
5

¿Cómo hago esto en MySQL?MySQL - SELECCIONAR DONDE fecha <X

SELECT * FROM MyTable WHERE MyDateCol < TODAY() 

I Googled mucho sobre el tema y realmente no encontraron nada, excepto "mirar en la fecha de referencia de MySQL", que no se explica con bastante facilidad lo anterior.

sé que puedo hacer lo siguiente, que es un poco indirecta:

SELECT * FROM MyTable WHERE MyDateCol BETWEEN (0000-00-00) AND TODAY() 

Respuesta

4

En MySQL, que tienen la Funciton curdate(), que les permite conocer la fecha de hoy.

Por lo tanto, algo como esto debería hacer:

select * 
from your_table 
where your_date_column < curdate() 


Citando la página del manual de de esa función:

Devuelve la fecha actual como un valor en 'YYYY-MM-DD' o YYYYMMDD formato, dependiendo de si la función es utilizada en una cadena o contexto numérico.


Y si se quiere comparar a la hora actual (y no sólo días), puede utilizar la función now():

Devuelve la fecha y la hora actual como un valor en 'YYYY-MM-DD HH:MM:SS' o YYYYMMDDHHMMSS.uuuuuu formato

+0

En cuanto al formato numérico AAAAMMDD, sería 2010-Mar-27 se convierta 20100327 o sería el valor añadido decimal de 2040 –

+1

no tengo un servidor en el que puedo tratar en este momento, pero teniendo en cuenta el manual de dice AAAAMMDD, supongo que obtendrías 20100327, y no es el resultado de una adición, con lo que sería difícil trabajar. –

+0

He verificado esto con mi servidor MySQL local, usa números como 20100327, lo que hace que sea muy fácil hacer comparaciones. También puede convertir la fecha de la cadena directamente en un número para usarlo en la comparación numérica .. '" 2010-03-27 "=>" 20100327 "=> 20100327' –

2
SELECT * FROM MyTable WHERE MyDateCol < CURDATE() 
1

Uso NOW() función:

SELECT * FROM MyTable WHERE MyDateCol < NOW() 
2

Si MySQL soporta SYSDATE, debe utilizar que en lugar de NOW() o CURDATE(), ya que es más estándar.

SELECT * FROM MyTable WHERE MyDateCol < SYSDATE; 
Cuestiones relacionadas