İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# datetimepicker ile sql'de arama

UgurOnline10.10.201010 cevap12.300 görüntüleme
2008'den beri159 mesaj
#1
arkadaşlar insert sorgusunda datetimepicker ile sql'e tarih ekliyorum. sql veri tipi datetime.

eklediğim kod:
com.Parameters.Add("@tarih", Convert.ToDateTime(dateTimePicker2.Text));
ana formda ise bir datetime daha var. orada seçilen tarih ile arama yaptırmak istiyorum. formatlar çakıştı sanırım aramalar listelenmiyor. iki datetimepicker formatımda long türünde.

burada nasıl bir değişiklik yapmam gerekiyor?
SqlCommand cmd = new SqlCommand(@"SELECT * FROM liste WHERE tarih LIKE '%" + dateTimePicker2.Text + "%'", con);
teşekkürler
Cevaplar
2008'den beri6.607 mesaj
#2
SqlCommand cmd = new SqlCommand(@"SELECT * FROM liste WHERE tarih LIKE '%" + dateTimePicker2.Value.ToString("yyyyMMdd") + "%'", con);


Şeklinde dener misin?
UgurOnline Konuyu açan
2008'den beri159 mesaj
#3
evet eklerken text değil value ile eklemeliymişim. ancak şimdi yine arama yapmıyor. datetimepicker üzerinden değil manuel olarak aratıyorum ama sonuç yok. aynı sql'de gözüktüğü gibi aratıyorum yine olmuyor :s

bu şekilde
@"SELECT * FROM liste WHERE telefon LIKE '%10.10.2010 00:00:00%'"
2008'den beri6.607 mesaj
#4
Şimdi LIKE ifadesi SQL 'de "benzer" anlamını taşır. Eğer "telefon" isimli alanında tarih değeri tutmuyorsan elbette boş sonuç döndürür. Eğer 2 tarih arasındaki verileri çekmek istiyorsan BETWEEN terimini kullanman lazım.
UgurOnline Konuyu açan
2008'den beri159 mesaj
#5
buraya telefon sorgusundan kopyaladım aslında tarih alanında arama yaptırıyorum. ve iki tarih arası değil sadece seçilen tarihe ait kayıtların listelenmesini istiyorum. like kısmına 2010 yazıyorum 2010 geçen tüm kayıtlar listeleniyor. ama 10.2010 yazınca listelemiyor. ama sql üzerinde zaten 10.10.2010 00:00:00 şeklinde veri var :s çözemedim
2008'den beri6.607 mesaj
#6
Diyelimki 2010 'un 10 'uncu ayına ait kayıtları çekmek istiyorsun. Sql cümlen şu şekilde olmalı:
Select * from tablo1 Where tarih between '2010.10.01' And '2010.10.31' 


Eğer tek güne ait kayıtları çekmek istiyorsan şu şekilde olmalı:

Select * from tablo1 Where tarih = '2010.10.31' 


Gördüğün gibi SQL 'de tarih yıl-ay-gün şeklinde gidiyor. Evet Management studio ile bakıldığında gün-ay-yıl sırası vardır ama sorguda yıl-ay-gün sıralaması ile yapılmalıdır.
UgurOnline Konuyu açan
2008'den beri159 mesaj
#7
N3CAT1 dedi: ↑
Eğer tek güne ait kayıtları çekmek istiyorsan şu şekilde olmalı:
Select * from tablo1 Where tarih = '2010.10.31' 
bu şekilde oluyor ama mesela 11 ekim seçtiğimde listeliyor. 12'den büyük bir gün seçince hata veriyor out of range hatası. ay ve günün yerini değiştirdim yine olmadı :s
2008'den beri6.607 mesaj
#8
UgurOnline dedi: ↑
yani burada like kullanmıyoruz sanırım öylemi ?
Evet. LIKE ifadesi zaten ingilizcede BENZEMEK anlamındadır ve SQL 'de de bu şekilde kullanılmaktadır. Genelde string ifadeleri ararken kullanılır.

Eğer tek güne ait kayıtları çekeceksen LIKE kullanman gereksiz olur. Verdiğim şekilde kullanırsan düzgünce verileri çekebilmiş olman lazım.
2008'den beri836 mesaj
#9
arama yapacağın query'nin başına "set dateformat dmy" yazıp gün.ay.yıl şeklinde arama yapabilirsin.SQL server genelllikle yyyy-MM-dd formatını kullanılır
UgurOnline Konuyu açan
2008'den beri159 mesaj
#10
teşekkür ederim :)
2019'den beri1 mesaj
#11
evet eklerken text değil value ile eklemeliymişim. ancak şimdi yine arama yapmıyor. datetimepicker üzerinden değil manuel olarak aratıyorum ama sonuç yok. aynı sql'de gözüktüğü gibi aratıyorum yine olmuyor :s

bu şekilde
@"SELECT * FROM liste WHERE telefon LIKE '%10.10.2010 00:00:00%'"
Ben SqlDataAdapter ile kendi tablo ve coloumn adını yazdıktan sonra en önemli nokta Sql de planlama_tarihinde kaydettiği değer nasıl ise o şekilde aşağıdaki yyyy-MM-dd değerini değiştirmen gerekiyor. Ben aşağıdaki şekilde tarihe göre arama yapabildim.

   SqlDataAdapter da1 = new SqlDataAdapter(@"SELECT * FROM Yapilacak WHERE planlama_tarihi LIKE '%" + DtpPlanara.Value.ToString("yyyy-MM-dd") + "%'", baglanti);
            DataSet ds1 = new DataSet();
            da1.Fill(ds1);
            dataGridView1.DataSource = ds1.Tables[0];
            dataGridView1.RowHeadersVisible = false;
            dataGridView1.Columns[0].Visible = false;

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.