你可以用
dateadd()
具有
datediff()
如下所示
declare @dt datetime = '20180703 11:32:45.333',
@flag int = 1
select dateadd(year, datediff(year, 0, @dt), 0) as [Year],
dateadd(month, datediff(month, 0, @dt), 0) as [Month],
case @flag
when 1 then dateadd(year, datediff(year, 0, @dt), 0)
when 2 then dateadd(month, datediff(month, 0, @dt), 0)
end