Alex Grecu
Trato de obtener una lista de todos los registros que tienen más de 1 año de mi base de datos, el campo para expired_contract tiene la siguiente información.
expired_contract DATE NOT NULL
Entonces toma la FECHA en el siguiente formato: AÑO-MM-DD, luego tengo el sql que lamentablemente no puedo hacer que funcione.
$sql = "SELECT *
FROM My_Contracte
WHERE expired_contract >= DATE_SUB(NOW(),INTERVAL 1 YEAR)
ORDER BY id_contract DESC";
Probé muchos comandos “DÓNDE” pero ninguno funcionó como esperaba. ¿Puedes ayudarme a hacer que esto funcione? Estoy buscando esto durante aproximadamente 5 horas. Necesito el comando exacto para que funcione.
El $sql me da algo pero lo toma mal, obtengo fechas como: 2015-10-01, 2016-10-01 y la fecha como 2014-09-30 no aparece.
Básicamente quiero mostrar fechas como:
Si hoy es 2015-10-01, quiero ver fechas anteriores a 1 año, desde 2014-09-30 y no mostrar fechas como 2015-10-01, 2016-10-01.
¿Tal vez tengo que editar algo en la base de datos?
Buscando su ayuda, gracias!
Tienes que usar menor que en lugar de mayor o igual:
$sql = "SELECT * FROM My_Contracte WHERE expired_contract < DATE_SUB(NOW(),INTERVAL 1 YEAR)
maestro yoda
SELECT * FROM My_Contracte WHERE (expired_contract NOT BETWEEN DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND CURDATE()) and expired_contract<=NOW() ;
-
Sí, pero su función también toma desde el año 2017 más o menos. Lo hice funcionar con la ayuda de Jens y Jamie. También te agradezco la ayuda.
– Alex Greco
1 oct 2015 a las 12:06
SELECT SUM(impressions) AS impressions FROM My_Contracte where DATE(expired_contract) BETWEEN DATE_SUB( CURDATE( ) ,INTERVAL 1 YEAR ) AND CURDATE( )
¿Esto ayuda? stackoverflow.com/a/12736181/128161
–Jamie Bicknell
1 oct 2015 a las 11:48
¡Está funcionando, gracias amigo!
– Alex Greco
1 oct 2015 a las 12:03