pillinetwork hesabınızla giriş yapın.

Sql ile tarih'e eşit kayıtları getirme.

SQL Server'da tarih alanları için kullanılan Veri Tipler le ilgili küçük bir örnek yapalım. Veri tipimiz SmallDatetime olsun.

SmallDateTime
'01.06.2007 00:00:00'
'YYYY-MM-DD hh:mm:ss'

Şeklinde kayıt tutar.

Bugünün kayıtlarını getirmek istiyoruz yada belirlediğimiz bir tarihteki kayıtları getirmek istiyoruz. Bu gibi durumlarda şöyle yapılabilirdi.

1
select * from tablo_adi where tarih_alani = getdate()

Fakat saat,dakika,Saniye cinsindende kayıt tuttuğu için kayıtlar eksik gelecektir.

Tarih Alanını 'gün/ay/yil' şeklinde parçalayıp şöyle bir sql de yazabiliriz. Biraz zahmetli olsada arkadaşım 'mma' 3 milyon kayıtta yaptığı testte yapılan işlemler içinde en performanslısı olduğunu söyledi bunuda not olarak düşelim.

1
select * from tablo_adi where day(tarih) = day(getdate()) and month(tarih) = month(getdate()) and year(tarih) = year(getdate())

Daha az zahmetle yapacağımız bir örnek daha vereyim.

1
2
SELECT * FROM tablo_adi
where Convert(nvarchar(8), tarih, 112) = Convert(nvarchar(8), getdate(), 112)

Tarih alanı ve getdate() ile aldığımız şuan'ın tarih bilgisini

nvarchar(8) e çeviriyoruz.

'01.06.2007 00:00:00' olacağı değer '20070106'

bu şekilde eşit olan kayıtları getirebilirsiniz.

Spacer
Spacer
/* kuen yazdı. 10 Nisan 2009 11:17. 5 yorum var */

Yorumlar

2. yöntemene benzer bir yol kullanıyorum. ilki ilginçmiş :) böyle kullanımını ilk defa gördüm. yazı için de teşekkürler kodamanda sql server dökümanı görmek gerçekten güzel.

microsoftu bazen gerçekten anlamıyorum. o kadar asp.net ile sql geliştiriliyor. ama hala tarih alanları uyumsuz. .net içinden datetime verisi göndermiyorsunuz.parametre oalrak bile kabul etmiyor. bunları aşsalar iyi olacak.

bir kötü yanı da sqlden gelen datetime verisini .netin datetime'ına çevirmek gerçekten bela içinde saniyeler vs olduğu için her zaman saçmalıyor. şunları aşsalar çok güzel olacak.

spam'ler dadanmış, hayırlı olsun...

int karşılaştırmak string karşılaştırmaya göre kolaydır. İlk yöntemde int, ikinci yöntemde nvarchar(8) karşılaştırıyorsunuz. Az kayıt olan bir tabloda fark edemeyebilirsiniz ama birinci yöntem daha performanslı çalışır.

@vectro
Asp.net ile object olarak tarih bilgisi gönderirseniz problem yaşamazsınız.

Bu sistemin aynısı mysql'de yokmu? Biriside mysql için aydınlatsa bizi :(

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork