Podemos usar o
DATE()
do SQLite função para realizar cálculos em uma determinada data. Uma das coisas que podemos fazer é retornar a primeira, segunda, terceira ou quarta instância de um determinado dia em um determinado mês. Exemplo
Segue um exemplo para demonstrar:
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
Neste exemplo, a data de início é a mesma para todas as instâncias, assim como a maioria dos argumentos. A única coisa que muda é o quanto adicionamos no início do mês. Se não adicionarmos nada, podemos retornar na primeira segunda-feira, adicionar 7 dias retorna na segunda segunda-feira e assim por diante.
Aqui, usamos
start of month
para retornar a data para o primeiro dia do mês. Em seguida, usamos mais modificadores para modificar essa data de acordo. O
weekday 1
modificador move a data para a próxima segunda-feira (domingo é 0, segunda-feira é 1, terça-feira é 2 e assim por diante). Para obter a segunda segunda-feira, podemos usar
+7 days
para adiantar a data em uma semana. Para as segundas-feiras subsequentes, adicionamos 7 dias a esse número (+14 days
, +21 days
, +28 days
etc). Também podemos ver que adicionar 28 dias retorna a primeira segunda-feira do mês seguinte.