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.
100 lines
6.4 KiB
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
|