25 Temmuz 2007

Haftanın Gününü Veren Fonksiyon

Sql Server'da verilen tarihin haftanın hangi günü olduğunu döndüren kullanıcı tanımlı bir fonksiyon yazalım. DATEPART(weekday,date) şeklinde dönen değer haftanın gün sırasıdır. Fakat bu değer haftanın ilk günü olarak tanımlanan DATEFIRST server değişkenine göre değişmektedir. Bu yüzden fonksiyonda bu durum için bir önlem alacağız.
Amerikan ingilizcesi dil ayarlarında default değer 7 yani Pazar'dır.

SELECT @@DATEFIRST ile tanımlı değeri alabiliriz
SET DATEFIRST 1 (İlk günü Pazartesi olarak tanımlayabiliriz)

CREATE FUNCTION DayOfWeek(@date DATETIME)
RETURNS VARCHAR(9)
AS
BEGIN
DECLARE @defDayofWeek VARCHAR(10)
DECLARE @dofWeek int
SET @dofWeek= (@@DATEFIRST + DATEPART(weekday,@Date)-1)%7
SELECT @defDayofWeek=CASE @dofWeek
WHEN 0 THEN 'Pazar'
WHEN 1 THEN 'Pazartesi'
WHEN 2 THEN 'Salı'
WHEN 3 THEN 'Çarşamba'
WHEN 4 THEN 'Perşembe'
WHEN 5 THEN 'Cuma'
WHEN 6 THEN 'Cumartesi'
END
RETURN (@defDayofWeek)
END


SET @dofWeek= (@@DATEFIRST + DATEPART(weekday,@Date)-1)%7
ifadesinde ilk günün her zaman Pazartesi olmasını sağladık.

1 yorum:

nakata dedi ki...

merhaba,

bu kod parçacığı işime yaradı. teşekkürler, iyi çalışmalar...