Consulta para obtener los registros de cuarto antes de trimestre actual en MySQL

Sachin:

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:

introducir descripción de la imagen aquí

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 YEARen 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?

Victor Omari Omosa:

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

db <> violín

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=298785&siteId=1
Recomendado
Clasificación