You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ITSM/.svn/pristine/34/34c566fd9b59da613115ec65ce0...

100 lines
6.4 KiB

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: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <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