none
c# sql iki tarih sutununda sorgu RRS feed

  • Soru

  • merhaba tablomda baslama ve bitis isimli datetime olan iki adet sutun var seçtiğim bir tarihin, başlama ve bitiş tarihleri arasına gelip gelmediğini bulabilmek için kayıtların sayısını çekmeye çalışıyorum ama sonuç hep sıfır geliyor

    SqlCommand cmd = new SqlCommand(@"SELECT COUNT(Id) FROM Personelizin 
    WHERE PersId=@PersId AND baslama>=@tarih1 AND bitis<=@tarih1", baglan);
      cmd.Parameters.AddWithValue("@PersId", this.PersId);
      cmd.Parameters.AddWithValue("@tarih1", Convert.ToDateTime(this.dateEdit1.EditValue));

    burada dateedit formatı (yyyy/MM/dd hh:mm)

    kaydederkende aynı şekilde kaydediyorum

    SqlCommand cmd = new SqlCommand(@"INSERT INTO Personelizin (PersId, izinturu, baslama, bitis, suresi, sureturu, aciklama)
    VALUES (@PersId,@izinturu,@baslama,@bitis,@suresi,@sureturu,@aciklama)", baglan);
                        cmd.Parameters.AddWithValue("@PersId", this.PersId);
                        cmd.Parameters.AddWithValue("@izinturu", this.comboBoxEdit1.Text);
                        cmd.Parameters.AddWithValue("@baslama", Convert.ToDateTime(this.dateEdit1.EditValue));
                        cmd.Parameters.AddWithValue("@bitis", Convert.ToDateTime(this.dateEdit2.EditValue));
                        cmd.Parameters.AddWithValue("@suresi", Convert.ToInt32(parca[0]));
                        cmd.Parameters.AddWithValue("@sureturu", parca[1].ToString());
                        cmd.Parameters.AddWithValue("@aciklama", this.textAcikla.Text);
    burada sorun nedir acaba nerede yanlış yapıyorum

    23 Ekim 2020 Cuma 23:52

Yanıtlar

  • Çünkü sorgunuzda diyorsunuz ki : bir tarih istiyorum ki hem başlangıç tarihinden küçük hemde bitiş tarihinden büyük olsun :) 

    Şöyle düzeltin :

    @tarih1>=@baslama AND @tarih1<=@bitis
    NOT: Between kullanabilirsiniz bu arada böyle yazmanıza gerek kalmaz.

    • Yanıt Olarak Öneren CetinBasozEditor 24 Ekim 2020 Cumartesi 09:42
    • Yanıt Olarak İşaretleyen tetee 24 Ekim 2020 Cumartesi 11:33
    24 Ekim 2020 Cumartesi 00:04
  • Sorguyu bir daha oku. 

    baslama>=@tarih1 AND bitis<=@tarih1

    @tarih1 = 2020/10/25

    baslama: 2020/10/24

    bitis: 2020/10/30

    Yani baslama <= @tarih1 and bitis >= @tarih1. Between ile olan sekli dogru.   



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.

    • Yanıt Olarak İşaretleyen tetee 24 Ekim 2020 Cumartesi 11:33
    24 Ekim 2020 Cumartesi 09:46
    Yanıtlayıcı

Tüm Yanıtlar

  • Çünkü sorgunuzda diyorsunuz ki : bir tarih istiyorum ki hem başlangıç tarihinden küçük hemde bitiş tarihinden büyük olsun :) 

    Şöyle düzeltin :

    @tarih1>=@baslama AND @tarih1<=@bitis
    NOT: Between kullanabilirsiniz bu arada böyle yazmanıza gerek kalmaz.

    • Yanıt Olarak Öneren CetinBasozEditor 24 Ekim 2020 Cumartesi 09:42
    • Yanıt Olarak İşaretleyen tetee 24 Ekim 2020 Cumartesi 11:33
    24 Ekim 2020 Cumartesi 00:04
  • Çünkü sorgunuzda diyorsunuz ki : bir tarih istiyorum ki hem başlangıç tarihinden küçük hemde bitiş tarihinden büyük olsun :) 

    Şöyle düzeltin :

    @tarih1>=@baslama AND @tarih1<=@bitis
    NOT: Between kullanabilirsiniz bu arada böyle yazmanıza gerek kalmaz.

    ilginiz için teşekkürler fakat sorgumda başlangıç tarihinden küçük, bitiş tarihinden büyük demiyorum verdiğim tarih başlangıç tarihinden büyük bitiş tarihinden küçük olsun

    baslama>=@tarih1 AND bitis<=@tarih1
    
    ayrıca between de kullandım ama maalesef @tarih1 BETWEEN baslama AND bitis
    Galiba sorunu buldum sorun şu benim arattığım tarih veritabanında yok yani başlama 24.10.2020 00:00 bitiş 30.10.2020 00:00 ve ben 25.10.2020 00:00 tarihini aratıyorum ki bu tarihe izin girilmesin çünkü personel zaten izinde ama böyle bir kayıt olmadığı için doğal olarak bulmuyor. Peki ben 24.10.2020 00:00 tarihinin veri tabanında bulunan başlama ve bitiş tarihlerinin arasında bir tarih olduğunu nasıl bulabilirim?


    • Düzenleyen tetee 24 Ekim 2020 Cumartesi 09:03
    24 Ekim 2020 Cumartesi 08:58
  • Sorguyu bir daha oku. 

    baslama>=@tarih1 AND bitis<=@tarih1

    @tarih1 = 2020/10/25

    baslama: 2020/10/24

    bitis: 2020/10/30

    Yani baslama <= @tarih1 and bitis >= @tarih1. Between ile olan sekli dogru.   



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.

    • Yanıt Olarak İşaretleyen tetee 24 Ekim 2020 Cumartesi 11:33
    24 Ekim 2020 Cumartesi 09:46
    Yanıtlayıcı
  • Sorguyu bir daha oku. 

    baslama>=@tarih1 AND bitis<=@tarih1

    @tarih1 = 2020/10/25

    baslama: 2020/10/24

    bitis: 2020/10/30

    Yani baslama <= @tarih1 and bitis >= @tarih1. Between ile olan sekli dogru.   



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.

    aynen çetin abi sanırım bi mantık hatası yaptım teşekkür ediyorum
    24 Ekim 2020 Cumartesi 11:33