Начало квартала в MS SQL Server’е можно получить следующим образом:
declare @d datetime = getdate() set @d = dateadd(qq, datediff(qq, 0, @d), 0) select @date
Здесь используется то, что функция datediff возвращает разницу в кварталах между “началом времен” в SQL и искомой датой. Затем к этому “началу времен” прибавляется разница в кварталах и получается начало квартала от нужной даты @date.
Функция будет иметь вид:
create function [dbo].[quarterStart] (@d datetime) returns datetime as begin return (dateadd(qq, datediff(qq, 0, @d), 0)) end
Пример использования функции: