/****** Objekt: UserDefinedFunction [dbo].[getKW_Jahr] Skriptdatum: 01/01/2009 20:14:26 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[getKW_Jahr](@h as datetime) returns int as begin return case when dbo.getWoche( @h) - case when dbo.getWochentag( convert(datetime, '1.1.'+convert(nvarchar(4),year(@h)),104)) in (5,6,7) then 1 else 0 end = 0 then /* die Woche vom 31.12. nehmen */ year(@h)-1 Else Case when dbo.getWoche( @h) - case when dbo.getWochentag( convert(datetime, '1.1.'+convert(nvarchar(4),year(@h)),104)) in (5,6,7) then 1 else 0 end = 53 and dbo.getWochentag( convert(datetime, '31.12.'+convert(nvarchar(4),year(@h)),104)) in (1,2,3) then year(@h)+1 Else year(@h) End End end GO /****** Objekt: UserDefinedFunction [dbo].[getKW_Woche] Skriptdatum: 01/01/2009 20:14:26 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[getKW_Woche](@h as datetime) returns int as begin return case when dbo.getWoche( @h) - case when dbo.getWochentag( convert(datetime, '1.1.'+convert(nvarchar(4),year(@h)),104)) in (5,6,7) then 1 else 0 end = 0 then /* die Woche vom 31.12. nehmen */ dbo.getWoche( convert(datetime, '31.12.' + convert(nvarchar(4), year(@h) -1), 104)) - case when dbo.getWochentag( convert(datetime, '1.1.'+convert(nvarchar(4),year(@h)-1),104)) in (5,6,7) then 1 else 0 end Else Case when dbo.getWoche( @h) - case when dbo.getWochentag( convert(datetime, '1.1.'+convert(nvarchar(4),year(@h)),104)) in (5,6,7) then 1 else 0 end = 53 and dbo.getWochentag( convert(datetime, '31.12.'+convert(nvarchar(4),year(@h)),104)) in (1,2,3) then 1 Else dbo.getWoche( @h) - case when dbo.getWochentag( convert(datetime, '1.1.'+convert(nvarchar(4),year(@h)),104)) in (5,6,7) then 1 else 0 end End End end GO /****** Objekt: UserDefinedFunction [dbo].[getWoche] Skriptdatum: 01/01/2009 20:14:26 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Martin Cremer -- Create date: 10.7.2008 -- Description: ermittelt aus dem Datum die rechnerische Woche (unabhängig von SET DATEFIRST): 1=die Woche (Mo-So) des 1.1. -- ============================================= CREATE FUNCTION [dbo].[getWoche] ( @dat datetime ) RETURNS int AS BEGIN DECLARE @Result int DECLARE @ErsterErster as Datetime --1.1. des entsprechenden Jahres SET @ErsterErster = convert(datetime, '1.1.' + convert(nvarchar(4), year(@dat)), 104) SELECT @Result = convert(int, (datediff(d, @ErsterErster, @dat) + dbo.getWochentag (@ErsterErster)-1)/7) + 1 RETURN @Result END GO /****** Objekt: UserDefinedFunction [dbo].[getWochentag] Skriptdatum: 01/01/2009 20:14:26 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Martin Cremer -- Create date: 16.8.2006 -- Description: ermittelt aus dem Datum den Wochentag (unabhängig von SET DATEFIRST): 1=Montag - 7=Sonntag -- ============================================= CREATE FUNCTION [dbo].[getWochentag] ( -- Add the parameters for the function here @dat datetime ) RETURNS int AS BEGIN -- Declare the return variable here DECLARE @Result int -- Add the T-SQL statements to compute the return value here SELECT @Result = (datepart(dw, @dat) - 1 + @@datefirst -1) % 7 +1 -- Return the result of the function RETURN @Result END