Вот решение, которое практически не зависит от базы данных, если это важно.
Создайте таблицу с именем ALMANAC, первичный ключ DATE, в которой перечислены все атрибуты даты, которую вы планируете использовать. Одним из них может быть ГОД, другим может быть НЕДЕЛЯ. Вы можете включить любые вычислимые функции DATE, которые вы хотите часто использовать. Вы также можете включить специфичные для компании атрибуты DATE, например, является ли дата выходным днем компании.
Напишите одну программу для заполнения DATE, скажем, на 10 лет (около 3650 строк плюс несколько високосных лет). Эта программа будет использовать функции дат для конкретной среды, доступные вам в СУБД или на некотором языке программирования. Заполнив таблицу ALMANAC, используйте ее как обычные данные. Соедините первичный ключ с любыми полями даты в вашей базе данных.
Это оказывается чрезвычайно полезным для выполнения таких задач, как подготовка отчета по неделям, месяцам, кварталам и по годам почти автоматически.
Если ДАТА не достаточно точная, вы можете даже разделить Альманах на более мелкие единицы времени, например смены, где 3 смены - это один день.