2011-02-17 12 views
45

Tengo problemas con una consulta, o al menos para encontrar la función correcta.Seleccionar todos los registros desde hace un año hasta ahora

Google no hizo mucha ayuda así que voy a pedir aquí:

tengo una mesa llena de una gran cantidad de filas y necesito para seleccionar todas las filas que son menos de un año de edad hasta ahora.

La tabla (llamada orders) tiene una columna DateTime llamada order_date, ese es el campo que determina cuándo se realizó el pedido.

Así: ¿Cómo puedo seleccionar todos los registros que tienen un order_date entre ahora y hace un año completo?

+1

¿Has intentado googlear "SQL ENTRE"? Porque hay muchísimos recursos disponibles para las personas que no conocen los principios básicos de SQL. – dctucker

Respuesta

128
select * 
from orders 
where order_date >= DATE_SUB(NOW(),INTERVAL 1 YEAR); 
+1

Creo que curdate() también se puede usar en el lugar de NOW() – Dotnet

+0

@Dotnet, hola Dotdot, ¿sabe usted order_date is what Datatype? También puede ser FECHA HORA Campo, entonces, ¿por qué tomar riesgos? No tendrá que modificar el código aunque cambie su tipo de datos a DATE TIME. Consiguiendo ? –

-4

espero que le ayuda a:

select * 
from table 
where (order_date BETWEEN '2/15/2011 3:36:18 PM' AND '2/17/2011 9:00:00 PM') 
+2

esto funcionará solo para una fecha en particular, pero cómo va a verificar el cambio en el día o el año cada vez que no puede cambiar la fecha correcta – Dotnet

7
SELECT * FROM order WHERE order_date >= curdate() - interval 1 year; 
1

Para atrás primer día del mes al año

SELECT DATE_SUB(DATE_FORMAT(CURRENT_DATE,'%Y-%m-01'),INTERVAL 1 YEAR); 
Cuestiones relacionadas