none
Conversion failed when converting date and/or time from character string.' hatasını çözemiyorum RRS feed

  • Soru

  •          BU HATAYI VERİYOR NASIL ÇÖZEBİLİRİM. anatablodaki bugüne ait verileri çekmek istiyorum.

    KODLAR DA BUNLAR

                con.Open();
                select_cmd.CommandText = "SELECT * FROM AnaTablo WHERE Tarih = '" + DateTime.Now.Day + "'";
                select_cmd.Connection = con;
                dr = select_cmd.ExecuteReader();
                while(dr.Read())
                {
                    OynamaSureleri_lstbx.Items.Add(dr.GetString(dr.GetOrdinal("Ad")));
                }
    29 Kasım 2020 Pazar 15:06

Yanıtlar

  • Datatype alıyorsunuz. Sql server'in desteklediği formatlar için aşağıdaki linke bakın.

     https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

    DateTime.Now.Day komutu ile integer bir değer aldığınızı (Gün) unutmayınız. Muhtemelen burayı gözden kaçırdınız. Tarih sütunun türü Date ise DateTime.Now olarak değiştirin.

                con.Open();
                select_cmd.CommandText = "SELECT * FROM AnaTablo WHERE Tarih = '" + DateTime.Now + "'";
                select_cmd.Connection = con;
                dr = select_cmd.ExecuteReader();
                while(dr.Read())
                {
                    OynamaSureleri_lstbx.Items.Add(dr.GetString(dr.GetOrdinal("Ad")));
                }



    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz


    29 Kasım 2020 Pazar 16:27
  • Tarih'in datatipi hata mesajina gore date\datetime. En sonda Day eklemenizin amaci nedir? O sadece gunu getirecek (1, 2, ..., 30, 31 gibi). Bugune ait veriler demissiniz, bugune ait verileri DateTime.Now ile cekemezsiniz. Onun yerine bir zaman araligi kullanmalisiniz. Bir de, bu sekilde yazarsaniz, er ya da gec hata alirsiniz ya da hatali veri alirsiniz. Onun yerine parametre kullaniniz:

    con.Open();
    using (SqlCommand cmd = new SqlCommand(@"SELECT * 
       FROM AnaTablo 
       WHERE Tarih => @baslangic and Tarih < @bitis", con))
    {
        var baslangic = DateTime.Today; // bugun, geceyarisi
        var bitis = DateTime.Today.AddDays(1); // bu geceyarisina kadar
        cmd.Parameters.Add("@baslangic", SqlDbType.DateTime).Value = baslangic;
        cmd.Parameters.Add("@bitis", SqlDbType.DateTime).Value = bitis;
    
        var reader = cmd.ExecuteReader();
        while(reader.Read())
        {
        
       OynamaSureleri_lstbx.Items.Add((string)reader["Ad"]);              
        }
    }



    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 Cihangir_Y 12 Aralık 2020 Cumartesi 10:01
    30 Kasım 2020 Pazartesi 13:03
    Yanıtlayıcı

Tüm Yanıtlar

  • Datatype alıyorsunuz. Sql server'in desteklediği formatlar için aşağıdaki linke bakın.

     https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

    DateTime.Now.Day komutu ile integer bir değer aldığınızı (Gün) unutmayınız. Muhtemelen burayı gözden kaçırdınız. Tarih sütunun türü Date ise DateTime.Now olarak değiştirin.

                con.Open();
                select_cmd.CommandText = "SELECT * FROM AnaTablo WHERE Tarih = '" + DateTime.Now + "'";
                select_cmd.Connection = con;
                dr = select_cmd.ExecuteReader();
                while(dr.Read())
                {
                    OynamaSureleri_lstbx.Items.Add(dr.GetString(dr.GetOrdinal("Ad")));
                }



    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz


    29 Kasım 2020 Pazar 16:27
  • Tarih'in datatipi hata mesajina gore date\datetime. En sonda Day eklemenizin amaci nedir? O sadece gunu getirecek (1, 2, ..., 30, 31 gibi). Bugune ait veriler demissiniz, bugune ait verileri DateTime.Now ile cekemezsiniz. Onun yerine bir zaman araligi kullanmalisiniz. Bir de, bu sekilde yazarsaniz, er ya da gec hata alirsiniz ya da hatali veri alirsiniz. Onun yerine parametre kullaniniz:

    con.Open();
    using (SqlCommand cmd = new SqlCommand(@"SELECT * 
       FROM AnaTablo 
       WHERE Tarih => @baslangic and Tarih < @bitis", con))
    {
        var baslangic = DateTime.Today; // bugun, geceyarisi
        var bitis = DateTime.Today.AddDays(1); // bu geceyarisina kadar
        cmd.Parameters.Add("@baslangic", SqlDbType.DateTime).Value = baslangic;
        cmd.Parameters.Add("@bitis", SqlDbType.DateTime).Value = bitis;
    
        var reader = cmd.ExecuteReader();
        while(reader.Read())
        {
        
       OynamaSureleri_lstbx.Items.Add((string)reader["Ad"]);              
        }
    }



    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 Cihangir_Y 12 Aralık 2020 Cumartesi 10:01
    30 Kasım 2020 Pazartesi 13:03
    Yanıtlayıcı