Для недель ISO-8601, где понедельник является первым днем недели, вы также можете определить понедельник, используя:
dateadd(day, 0 - mod(extract(weekday FROM d) + 6, 7), d)
Использование mod(extract(weekdays from d) + 6, 7)
приведет к понедельнику 0, вторнику 1 и т. Д. c и воскресенье 6, чтобы упростить вычисления.
Затем вы можете определить воскресенье, используя:
dateadd(day, 6 - mod(extract(weekday FROM d) + 6, 7), d)
Вы можете легко получить другие дни недели таким образом (например, используйте 1 - mod(extract(weekday FROM d) + 6, 7)
для вторника и т. д. c.
С другой стороны, если воскресенье является первым днем недели (например, в США), вы можете использовать:
dateadd(day, 0 - extract(weekday from d), d)
и на понедельник
dateadd(day, 1 - extract(weekday from d), d)