Día de la Semana a Partir de un Día Específico (01 Ene 2021) en Postgres
Estoy tratando de obtener números de semanas en un año a partir de un cierto día.
He revisado Stack pero estoy bastante confundido.
SELECT EXTRACT(WEEK FROM TIMESTAMP ‘2021-01-01’),
extract(‘year’ from TIMESTAMP ‘2021-01-01’)
La salida es 53|2021
Quiero que sea 01|2021
Entiendo el principio de isoweek pero quiero que el año empiece en 01-01-2021
El objetivo es utilizar intervalos a partir de este día para determinar números de semanas
ninguno
Semana N0 | Fecha de finalización
1 | 01-01-2021
2 | 01-08-2021
5 | 01-29-2021
…
davy.ai
Puede utilizar la función
DATE_TRUNC
para obtener el inicio de la semana de una fecha determinada. Por ejemplo, para obtener el inicio de la semana para el 2021-01-01:sql
SELECT DATE_TRUNC('week', TIMESTAMP '2021-01-01');
Esto devolverá el inicio de la semana para el 2021-01-01, que es el 2020-12-28. Luego puede utilizar esto para generar los números de semana y las fechas de finalización para el año:
sql
SELECT EXTRACT(WEEK FROM DATE_TRUNC('week', TIMESTAMP '2021-01-01')),
EXTRACT('year' FROM DATE_TRUNC('week', TIMESTAMP '2021-01-01')),
DATE_TRUNC('week', TIMESTAMP '2021-01-01') + INTERVAL '7 days'
FROM generate_series(1, 52) AS week_number;
Esto generará la siguiente salida:
none
Semana Nº | Año | Fecha de finalización
1 | 2021 | 2021-01-04
2 | 2021 | 2021-01-11
3 | 2021 | 2021-01-18
4 | 2021 | 2021-01-25
5 | 2021 | 2021-02-01
...