Hallo zusammen,
ich hab hier eine Funktion (fn_ISOweek)
die die ISO-Woche zu einem Datum ausgibt.
Interessant ist nur dass:
setlanguage english
select DataManagementV2.dbo.fn_ISOweek('2015-05-25')
- KW 21 ausgibt
setlanguage deutsch
select DataManagementV2.dbo.fn_ISOweek('25-05-2015')
- die richtige KW22
Ausgeführt auf nen SQL Server 2005 Express DE:
Kann mir jemand sagen warum das so ist?
Vielen Dank im Voraus für Eure Hilfe!
da Hartl
ich hab hier eine Funktion (fn_ISOweek)
die die ISO-Woche zu einem Datum ausgibt.
Interessant ist nur dass:
setlanguage english
select DataManagementV2.dbo.fn_ISOweek('2015-05-25')
- KW 21 ausgibt
setlanguage deutsch
select DataManagementV2.dbo.fn_ISOweek('25-05-2015')
- die richtige KW22
Ausgeführt auf nen SQL Server 2005 Express DE:
Code:
CODE der fn_ISOWeek:
-----------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_ISOweek]
(@DATE datetime)
RETURNS int
AS
BEGIN
DECLARE @ISOweek int
SET @ISOweek = DATEPART(wk, @DATE) + 1 -
DATEPART(wk, CAST( DATEPART( yy, @DATE ) AS CHAR(4) ) + '0104' )
--Jan 1-3 may belong to the previous year
IF ( @ISOweek = 0 )
BEGIN
DECLARE @Date2 datetime
SET @DATE2 = CAST( DATEPART( yy, @DATE ) - 1 AS CHAR(4) ) +
'12' + CAST( 24 + DATEPART( DAY, @DATE ) AS CHAR(2) )
-- rekursiver Aufruf:
EXEC @ISOWeek = ISOWeek @DATE2
SET @ISOWeek = @ISOWeek + 1
END
--Dec 29-31 may belong to the next year
IF ( ( DATEPART( mm, @DATE ) = 12 ) AND
( ( DATEPART( dd, @DATE ) - DATEPART( dw, @DATE) ) >= 28 ) )
SET @ISOweek=1
RETURN(@ISOweek)
END
Kann mir jemand sagen warum das so ist?
Vielen Dank im Voraus für Eure Hilfe!
da Hartl
Zuletzt bearbeitet von einem Moderator: