Salı , Mart 19 2024
Anasayfa / Mssql / Microsoft SQL Server’da Yılın, Ayın ve Haftanın İlk ve Son Günleri

Microsoft SQL Server’da Yılın, Ayın ve Haftanın İlk ve Son Günleri

Microsoft SQL Server’da tarih işlemlerinin çok sık yapılmasından ve değişik biçimlere ihtiyaç duyulmasından dolayı SQL Server çok çeşitli tarih fonksiyonlarına içinde barındırır. Çoğu uzman kullanıcıda bunları bilir ve kullanır. Ama öyle zaman bir gelir ki  var olan tarih fonksiyonları istediğimiz sonuç için yetersiz kalabilir. Bu yüzden ihtiyaç duyulan tarih değerlerinin yada biçimlerinin elde edilmesi için farklı yöntemler kullanılabiliriz. Hayal gücünüze ve ihtiyacınıza göre sizlerde bu örneklerden yola çıkarak çözümler üretebilirsiniz.

Örneğin geçen karşılaştığım bir uygulamadan içinde bulunduğumuz ayın ilk günü aşağıdaki gibi hesaplanmıştı(!).

SELECT ’01’+CONVERT(VARCHAR,datepart(MONTH,GETDATE()))+CONVERT(VARCHAR,datepart(YEAR,GETDATE())) TARIH

Bu yüzden sık ihtiyaç duyulan ayın ilk günü, ayın son günü, sonraki ayın ilk günü veya önceki ayın son günü değerleri nasıl elde edebileceğimize değinelim istedim.

Aslında basit bir yöntem kullanacağız. Örneğin bugünün 22.05.2013 olduğunu düşünürsek ayın ilk günü bulmak için öncelikle bu tarihin ayın kaçıncı günü olduğu DAY fonksiyonu ile bulup daha sonra çıkan gün kadar eksi gün sayısını elimizdeki tarih değerine eklersek ayın ilk gününü bulmuş oluruz. Şimdi bugünün tarihini baz alarak örneklerimizi yapalım.

DECLARE @tarih DATETIME=GETDATE()
SELECT 'Onceki Ayın Son Gunu' Aciklama,CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(@tarih)),@tarih),112)  Tarih
UNION ALL
SELECT 'Ayın İlk Günü',CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(@tarih)-1),@tarih),112) AS Date_Value
UNION ALL
SELECT 'Bugunun Tarihi',CONVERT(VARCHAR(10),@tarih,112) AS Date_Value
UNION ALL
SELECT 'Ayın Son Günü',CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,1,@tarih))),DATEADD(mm,1,@tarih)),112) 
UNION ALL
SELECT 'Sonraki Ayın İlk Günü',CONVERT(VARCHAR(10),DATEADD(dd,-(DAY(DATEADD(mm,1,@tarih))-1),DATEADD(mm,1,@tarih)),112) 
UNION ALL
SELECT 'Haftanın İlk Günü', DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)
UNION ALL
SELECT 'Sonraki Haftanın İlk Günü', DATEADD(ww, DATEDIFF(ww,0,GETDATE())+1, 0)
UNION ALL
SELECT 'Yılın İlk Günü',DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
UNION ALL
SELECT 'Yılın Son Günü',DATEADD(dd,-1,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0)))

Sonuç;

About webbocugu

Check Also

Could not load file or assembly Microsoft.SqlServer.management.sdk.sfc version 11.0.0.0 Hatası Çözümü

Could not load file or assembly Microsoft.SqlServer.management.sdk.sfc version 11.0.0.0 Hatası Çözümü Bir öğrencimin Visual Studio …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir