USE [Vertragsverwaltung_20160404] GO /****** Object: UserDefinedFunction [dbo].[Get_Dateperiode] Script Date: 02.12.2016 09:08:53 ******/ DROP FUNCTION [dbo].[Get_Dateperiode] GO /****** Object: UserDefinedFunction [dbo].[Get_Dateperiode] Script Date: 02.12.2016 09:08:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= Create FUNCTION [dbo].[Get_Dateperiode] ( @type varchar(255), @startperiode int ) Returns datetime AS BEGIN declare @dt datetime declare @offset int if @type='ActWeek' begin if @startperiode=1 begin set @dt=DATEADD(wk, DATEDIFF(wk, 6, getdate()), 6) set @dt=dateadd(dd,1,@dt) end if @startperiode=0 begin set @dt=DATEADD(wk, DATEDIFF(wk, 5, getdate()), 5) set @dt=dateadd(dd,2,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='ActMonth' begin if @startperiode=1 set @dt=DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) if @startperiode=0 set @dt=Dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0)) return @dt end if @type='ActQuarter' begin if @startperiode=1 set @dt= DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) if @startperiode=0 begin set @dt= dateadd(qq,datediff(qq,-1,getdate()),-1) set @dt=dateadd(dd,1,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='ActYear' begin if @startperiode=1 set @dt = DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) if @startperiode=0 set @dt = dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate() )+1, 0)) return @dt end declare @calcdate datetime if @type='LastWeek' begin set @calcdate=dateadd(wk,-1,getdate()) if @startperiode=1 begin set @dt=DATEADD(wk, DATEDIFF(wk, 6, @calcdate), 6) set @dt=dateadd(dd,1,@dt) end if @startperiode=0 begin set @dt=DATEADD(wk, DATEDIFF(wk, 5, @calcdate), 5) set @dt=dateadd(dd,2,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='LastMonth' begin set @calcdate=dateadd(mm,-1,getdate()) if @startperiode=1 set @dt=DATEADD(mm, DATEDIFF(mm,0,@calcdate), 0) if @startperiode=0 set @dt=Dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,@calcdate )+1, 0)) return @dt end if @type='LastQuarter' begin set @calcdate=dateadd(qq,-1,getdate()) if @startperiode=1 set @dt= DATEADD(qq, DATEDIFF(qq,0,@calcdate), 0) if @startperiode=0 begin set @dt= dateadd(qq,datediff(qq,-1,@calcdate),-1) set @dt=dateadd(dd,1,@dt) set @dt=dateadd(ms,-3,@dt) end return @dt end if @type='LastYear' begin set @calcdate=dateadd(yy,-1,getdate()) if @startperiode=1 set @dt = DATEADD(yy, DATEDIFF(yy,0,@calcdate), 0) if @startperiode=0 set @dt = dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,@calcdate )+1, 0)) return @dt end return @dt END GO