Estoy tratando de obtener los registros de cuarto antes de trimestre actual en MySQL. Pero no es capaz de averiguar cómo se construirá la consulta.
Mi tabla de MySQL:
Aquí está mi consulta para obtener los registros de trimestre actual (enero de 2020 a marzo de 2020):
SELECT * FROM `customers` WHERE QUARTER(`customer_date`) = QUARTER(CURRENT_DATE)
AND YEAR(`customer_date`) = YEAR(CURRENT_DATE)
ORDER BY `customer_date` DESC
Pero cuando estoy usando siguiente consulta para obtener los registros de cuarto trimestre actual antes de registros es decir Oct 2019 to Dec 2019
, la consulta no me dió resultado correcto. En realidad se obtiene un registro de cada trimestre (octubre a diciembre) de todos los años anteriores en la tabla:
SELECT * FROM `customers` WHERE QUARTER(`customer_date`) = QUARTER(CURRENT_DATE - INTERVAL 1 QUARTER)
ORDER BY `customer_date` DESC
No puedo usar YEAR
en la anterior consulta. Si utilizo el ejercicio de consulta fallará cuando se llevará a cabo en el futuro, por ejemplo, en el trimestre de abril 2020 a junio 2020.
¿Cómo puede esta consulta puede modificar para obtener el resultado requerido?
Prueba esto va a hacer:
select
*
from
customers
where
quarter(`customer_date`) = quarter(current_date - interval 1 quarter)
and year(customer_date) =
(case
when quarter(curdate()) > 1 then year(current_date)
else year(current_date)-1
end)
order by
`customer_date` desc