sql >> Base de Datos >  >> RDS >> Mysql

MySQL consulta yearweek de la semana actual para comenzar un jueves, finalizar el miércoles

Puede aprovechar WEEKDAY() que devuelve un número que representa el día de la semana (0 =lunes, 6 =domingo) y algunas matemáticas sencillas para reescribir esta consulta.

Reste el día de la semana en el que desea que comience la semana (en su caso, 4 =jueves) de la fecha seleccionada, agregue 7 y tome el resto de 7. Esto le dará la cantidad de días que debe restar para obtener el inicio de su rango.

Se aplica una lógica similar para calcular la fecha de finalización del intervalo.

SELECT * 
FROM transactions 
WHERE DATE(transactionDate)
    BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
        AND DATE_ADD(DATE(NOW()), INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)
ORDER BY transactionDate DESC;

Para una fecha de inicio diferente, sustituya el día de la semana por 4 en la consulta.