sql >> Base de Datos >  >> RDS >> SQLite

Obtenga el primer, segundo, tercer o cuarto lunes de un mes en SQLite

Podemos usar DATE() de SQLite Función para realizar cálculos en una fecha determinada. Una de las cosas que podemos hacer es devolver la primera, segunda, tercera o cuarta instancia de un día determinado dentro de un mes determinado.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT 
    DATE('2025-10-20', 'start of month', 'weekday 1') AS "First",
    DATE('2025-10-20', 'start of month', '+7 days', 'weekday 1') AS "Second",
    DATE('2025-10-20', 'start of month', '+14 days', 'weekday 1') AS "Third",
    DATE('2025-10-20', 'start of month', '+21 days', 'weekday 1') AS "Fourth",
    DATE('2025-10-20', 'start of month', '+28 days', 'weekday 1') AS "Fifth";

Resultado:

First       Second      Third       Fourth      Fifth     
----------  ----------  ----------  ----------  ----------
2025-10-06  2025-10-13  2025-10-20  2025-10-27  2025-11-03

En este ejemplo, la fecha de inicio es la misma para todas las instancias, así como para la mayoría de los argumentos. Lo único que cambia es cuánto agregamos al inicio del mes. Si no agregamos nada, podemos regresar el primer lunes, agregar 7 días regresa el segundo lunes, y así sucesivamente.

Aquí, usamos start of month para devolver la fecha al primer día del mes. Luego usamos más modificadores para modificar esa fecha en consecuencia.

El weekday 1 El modificador adelanta la fecha al siguiente lunes (el domingo es 0, el lunes es 1, el martes es 2, etc.).

Para obtener el segundo lunes podemos usar +7 days para adelantar la fecha una semana. Para los lunes subsiguientes sumamos 7 días a ese número (+14 days , +21 days , +28 days etc.).

También podemos ver que al sumar 28 días se devuelve el primer lunes del mes siguiente.