Если вы можете терпеть снижение производительности при объединении еще одной таблицы, у меня есть предложение, которое кажется странным, но работает очень хорошо.
Создайте таблицу, которую я назову ALMANAC со столбцами, такими как день недели, месяц, год. Вы даже можете добавить столбцы для специфических для компании особенностей даты, например, является ли дата выходным днем компании или нет. Возможно, вы захотите добавить начальную и конечную метки времени, как указано ниже.
Хотя вы могли бы обходиться с одним рядом в день, когда я делал это, мне было удобно ходить с одним рядом в смену, где в день три смены. Даже при такой скорости период в десять лет составлял чуть более 10000 строк.
Когда вы пишете SQL для заполнения этой таблицы, вы можете использовать все ориентированные на дату встроенные функции, чтобы упростить работу. Когда вы собираетесь выполнять запросы, вы можете использовать столбец даты в качестве условия соединения или вам могут потребоваться две временные метки, чтобы обеспечить диапазон для захвата временных меток в пределах диапазона. В остальном это так же просто, как работать с любыми другими видами данных.