SQLite
 sql >> Database >  >> RDS >> SQLite

Ottieni il primo, il secondo, il terzo o il quarto lunedì del mese in SQLite

Possiamo usare DATE() di SQLite funzione per eseguire calcoli in una determinata data. Una delle cose che possiamo fare è restituire la prima, la seconda, la terza o la quarta istanza di un determinato giorno entro un determinato mese.

Esempio

Ecco un esempio da dimostrare:

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";

Risultato:

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

In questo esempio, la data di inizio è la stessa per tutte le istanze, così come per la maggior parte degli argomenti. L'unica cosa che cambia è quanto aggiungiamo all'inizio del mese. Se non aggiungiamo nulla, possiamo restituire il primo lunedì, aggiungendo 7 giorni di reso il secondo lunedì e così via.

Qui utilizziamo start of month per riportare la data al primo giorno del mese. Quindi utilizziamo più modificatori per modificare quella data di conseguenza.

Il weekday 1 il modificatore sposta la data in avanti al lunedì successivo (domenica è 0, lunedì è 1, martedì è 2 e così via).

Per ottenere il secondo lunedì possiamo usare +7 days per anticipare la data di una settimana. Per i lunedì successivi aggiungiamo 7 giorni a quel numero (+14 days , +21 days , +28 days ecc).

Possiamo anche vedere che l'aggiunta di 28 giorni restituisce il primo lunedì del mese successivo.