mehmetduran.com - Paylaşmak Güzeldir...
Sql'de Datetime Alanından Yılı ve Ayı Belirleme Fonksiyonu
Veritabanında tuttuğumuz verilerin hangi tarihte eklendiğini hangi tarihte oluşturulduğunu tutuyorsak ve daha sonra bu tarihlere göre işlem yapacaksak sql'de kullancağımız bazı fonksiyonlar var. Öncelikle tarih bilgilerini veritabanında datetime veya date olarak tutarız. Bu verileri ise daha sonra yapacağımız uygulamalarda kullanırız.(arşiv tutma gibi...) Mesela biz belli bir tarihte eklenen verileri almak istiyorsak aşağıdaki gibi bir komut ve sql fonksiyonlarını kullanabiliriz:

"select * from tablo_adı where month(tarih_tutan_alan_adı) = @ay and year(tarih_tutan_alan_adı)=@yil"

Bu komut ile belirlediğimiz ay ve yılda eklenmiş olan verileri elde edeceğiz.
Örneğin; 2008 Ağustos ayında eklenen verileri çekmek istiyorsak komutumuz şöyle olmalı:

"select * from tablo_adı where month(tarih_tutan_alan_adı) = 8 and year(tarih_tutan_alan_adı)=2008"

Tabi bu komutu daha kullanışlı duruma getirebiliriz. Örneğin yaptığım arşiv bölümünde tamamen bu komutları kullanıyorum ve hangi ay hangi yılda hangi verilerin eklendiğini gösterirken parametre değerlerini querystring ile elde ederek bu komutu daha faydalı kullandığıma inanıyorum. Tabi burada ay ve yıl değerlerini querystring ve ya session ile alabilir ve sizde kendi arşivinizi oluşturabilirsiniz.

İyi Çalışmalar!
Mehmet Duran 20 Ağustos Çarşamba 2008 8 40188 3,3
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar MySql'de Fonksiyon Tanımlama ve Kullanma Asp.net ile MySql Veritabanının Yedeğini (Dump) Alma MySql .Net Connector (MySql'i Visual Studio ve Linq ile Kullanma) SQL Server 2005 Programming (E-Book) Left Join ile Çoklu Tablo Bağlama
Yorumlar
Yorum Yaz
RSS Yorum Takibi
serkan 10 Ocak Pazar 2010 20:47 #1
"select * from tablo_adı where month(tarih_tutan_alan_adı) = 8 and year(tarih_tutan_alan_adı)=2008" Bende bunun gibi bir sorgu yaptım localde sorunsuz çok iyi çalışıyor ama server da çalışmıyor. Asp.net & mssql 2005 kullanıyorum serverda da aynısı var(sql 2005) acaba neden olabilir ki _? (bu arada tarih datetime tipinde)
Mehmet Duran 10 Ocak Pazar 2010 21:22 #2
Sorguda bir hata yok. Ama sebebini bulmak için verdiği hatayı da yazsan iyi olurdu. Bu şekilde neden hata verdiğini çözmek zor.
serkan 11 Ocak Pazartesi 2010 01:31 #3
sql = "SELECT [id], [baslik], [aciklama], [resim] FROM [TBL_HABER] WHERE day(tarih) = " + ddl_gun.SelectedValue + " AND month(tarih) = " + ddl_ay.SelectedValue + " AND year(tarih) = " + ddl_yil.SelectedValue + " ORDER BY [id] DESC"; sorgum bu localde ilgili tarihe ait sonuçları sorunsuz gösteriyor fakat server da çalışmıyor mesele server da çalışmaması
serkan 11 Ocak Pazartesi 2010 01:34 #4
"SELECT TOP 10 [id], [baslik] FROM [TBL_HABER] WHERE dateAdd(day,1,tarih)> getDate() ORDER BY [hit] DESC" yine bu kod son bir günün verilerini çekmek için kullandığım bir kod, yine localde sorunsuz çalışırken server da "SELECT TOP 10 [id], [baslik] FROM [TBL_HABER] ORDER BY [hit] DESC" kod buymuş gibi çalışıyor yani dateAdd(day,1,tarih)> getDate() bu kodu görmezden geliyor neden olabilir acaba_?
Mehmet Duran 12 Ocak Salı 2010 10:04 #5
İlk sorgunda bir hata yok gibi. Ama neden çalışmaz onu bilmiyorum. Eğer bağlanabilirsen Sql Management ile server'a bağlanıp, buna benzer çeşitli sorgulamaları yapmanı ve sonucu görmeni tavsiye ederim. Sorunu bulmada yardımcı olur. İkinci sorunda ise dateAdd fonksiyonundan kaynaklanıyor olabilir. Ayrıca sorgu içinde tüm sutun adlarını tek tipte yazarsan daha iyi olur. Hepsini [] arasında ve ya bunlar olmadan yazarsan daha iyi olur.
serkan 13 Ocak Çarşamba 2010 01:38 #6
öncelikle yardımın için teşekkür ederim sorunu çözdüm belki başkasının da başına gelebilir diye yazmank istedim ben veritabanına veriyi kaydederken Datetime.Now ile kaydediyordum o da veritabanına 1.6.2010(mdy) şeklinde kayıt yapıyordu benim bilgisayardaki tarih formatına göre kod düzgün çalışıyordu ama server in tarih formatı farklıymış yani veriyi kaydettirirken 6.1.2010(dmy) şeklinde kaydettim oldu yani eskisinin çalışmaması ocak 6 yerine haziran 1 zannediyormuş
serkan 13 Ocak Çarşamba 2010 01:39 #7
bunu önüne geçmek için kullandığım kod string sql = "SET DATEFORMAT DMY; INSERT INTO ....."
Mehmet Duran 13 Ocak Çarşamba 2010 11:54 #8
Umarım bu sorunu yaşayanlara yardımcı olur. Ben projelerde genel bir format belirlediğim için daha önce bu sorunla hiç karşılaşmamıştım.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Gençken bilgi ağacını dikmesek, yaşlandığımız zaman gölgesine sığınacak bir yerimiz olmayacaktır.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009