es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  ,

Answer

  1. Avatar for 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
    ...

Comments are closed.