Anasayfa > Fonksiyonlar, SQL Genel Bilgiler ve Eğitim bilgileri, Tarihi-Zaman Fonksiyonları > 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ç;

2013-05-22_095447

  1. 09 Mart 2016, 09:08

    merhaba örneğinizi inceledim denedğimde bende tarih kısmı arasında – olmadan geliyor mesela : 20160301 bunun gibi . sadece ayın ilk gününü kullanacağım

  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: