Şimdi Ara

C#'da DateTime.Now verisini SQL DateTime'a gönderemiyorum!

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
14
Cevap
0
Favori
20.531
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • ASP.NET'de C# kod sayfasından SQL mdf veritabanına tarih bilgisi göndermekle ilgili sorun yaşıyorum. SQL veri tipi "DateTime"

    ÇALIŞIYOR (Tarih verisiyle birlikte yorum ekleyebiliyorum)
    String tarih = "11.12.2010 01:34:33";
    "INSERT INTO Yorumlar(ComFor, UserName, Date, Comment) VALUES(1, '"+ username + "','" + tarih + "', '"+ comment +"')";

    ÇALIŞMIYOR (Tarayıcı penceresinde SQL hatası)
    String tarih = Convert.ToString(DateTime.Now);
    "INSERT INTO Yorumlar(ComFor, UserName, Date, Comment) VALUES(1, '"+ username + "','" + tarih + "', '"+ comment +"')";

    Hata Şu:

    [SqlException (0x80131904): The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

    Alt alta Label'lar koyup birine Datetime.Now, birine elle yazılmış bir tarih yolladım. Karakter yapıları boşluklar dahil birbirinin aynı.

    Neden hata veriyor anlamadım.



    < Bu mesaj bu kişi tarafından değiştirildi M.A.N.G.A.K.A -- 23 Mart 2011; 1:58:16 >







  • Sorunu şu şekilde çözdüm:

    String tarih = Convert.ToString(DateTime.Now);
    sorgu.CommandText = "INSERT INTO Yorumlar(ComFor, UserName, Date, Comment) VALUES(1,'" + username + "',@simdi,'" + comment + "')";
    sorgu.Parameters.AddWithValue("@simdi",DateTime.Parse(tarih));
  • ee sql veritipin datetime..
    kodda atama yaparken string çeviriyorsun
  • Ama string değişkeni yollayınca datetime'a kabul ediyordu.
  • quote:

    Orijinalden alıntı: Whocares

    ee sql veritipin datetime..
    kodda atama yaparken string çeviriyorsun


    onun bir önemi yok veri tabanı tarafına giden verinin formatı önemli tipi değil. yani tarih 02/01/2010 09:10:30 şeklinde gittikten sonra hata vermez veri tabanı. Senin bahsettiğin string ve datetime program katmanındaki bir hareket. database katmanı program katmanındaki veri tipleriyle doğrudan değil dolaylı yoldan ilişkilidir. Yani veri 02/01/2010 09:10:30 olduktan sonra string veya datetime olmaısnın bir önemi yok. Önemli olan veri tabanının istediği formatta göndermek.
  • datetime i önce stringe çevirmişsin sonra tekrar datetime a parse etmişsin fazladan kod olmuş o işlemde.
  • quote:

    Orijinalden alıntı: poyzn

    datetime i önce stringe çevirmişsin sonra tekrar datetime a parse etmişsin fazladan kod olmuş o işlemde.

    bunu demiştim
  • DateTime'ı doğrudan yazınca SQL Syntax error veriyor. İşin içinden çıkamadım. Öyle çalıştı ama.

    Bir sorum var: Şimdiki zaman'dan eski bir zamanı çıkarıp, "20 Gün 4 saat 3 dakika 2 saniye Önce"
    gibi bir string yazdırma ek programı yapmak istiyorum. Bir fikri olan var mı? tarihler arasında matematiksel işlemler nasıl yapılıyor?



    < Bu mesaj bu kişi tarafından değiştirildi M.A.N.G.A.K.A -- 24 Mart 2011; 0:35:35 >
  • bende aynı sorunu c#ta yasadım sqle gönderdigim kod bu böle çözdüm
    "'" + Convert.ToString(DateTime.Now.Month)+"/" + Convert.ToString(DateTime.Now.Day) +"/"+ Convert.ToString(DateTime.Now.Year) + "'" bu sekilde saat gerekmiyodu bana ama satte eklenebilir
  • quote:

    Orijinalden alıntı: C.R.U.I.S.E.R

    ASP.NET'de C# kod sayfasından SQL mdf veritabanına tarih bilgisi göndermekle ilgili sorun yaşıyorum. SQL veri tipi "DateTime"

    ÇALIŞIYOR (Tarih verisiyle birlikte yorum ekleyebiliyorum)
    String tarih = "11.12.2010 01:34:33";
    "INSERT INTO Yorumlar(ComFor, UserName, Date, Comment) VALUES(1, '"+ username + "','" + tarih + "', '"+ comment +"')";

    ÇALIŞMIYOR (Tarayıcı penceresinde SQL hatası)
    String tarih = Convert.ToString(DateTime.Now);
    "INSERT INTO Yorumlar(ComFor, UserName, Date, Comment) VALUES(1, '"+ username + "','" + tarih + "', '"+ comment +"')";

    Hata Şu:

    [SqlException (0x80131904): The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

    Alt alta Label'lar koyup birine Datetime.Now, birine elle yazılmış bir tarih yolladım. Karakter yapıları boşluklar dahil birbirinin aynı.

    Neden hata veriyor anlamadım.


    Sanırım kayıt tarihini geçmek istiyorsun. Bence bunu sql server üzerinden default değer ile yapmalısın. Sql serverda tarih alanının default değer alanına get_date() yaz serverın saatini girmiş olursun. client'ların mevcut tarihi göndermesi doğru bir yaklaşım değil. hepsi farklı değer olabilir. senin durumunda böyle bir durum yok fakat bunu alışkanlık haline getirmelisin standartların olmalı.

    Ayrıca tarihi string olarak göndermek yerine parameter olarak ekle. tarihide culture'a göre formatlamak zorunda kalırsın böyle yaparsan(culture bapımlı verileri string olarak asla gönderme)


    Bu arada sql script mi kaldı yahu? Entity framework'e geç biraz daha zorlayıp codefirst modele geçmeni tavsiye ederim.




  • hay Allah razı olsun . bende bir türlü çözememiştim bu sorunu . ben textboxtaki tarihi atamamıştım . böyle attım ve çözdüm sayende. varsın bi kod fazla olsun . i5 ve i7 işlemciler ne için var :) çalışsın dursunlar :D
  • merhaba
    benim de buna benzer birsorunum var.

    veritabanından bugünün/dünün kayıtlarını almak istedim.


    kodlarım:
     C#'da DateTime.Now verisini SQL DateTime'a gönderemiyorum! C#'da DateTime.Now verisini SQL DateTime'a gönderemiyorum!




  • Tarihleri aşağıdaki fonksiyonları kullanarak yapabilirsin.

    public static string ToSqlDate(DateTime tarih)
    {
    string s1 = tarih.ToString("yyyy") + "-" + tarih.ToString("MM") + "-" + tarih.ToString("dd");
    return s1;
    }

    public static string ToSqlDateTime(DateTime tarih)
    {
    string s1 = tarih.ToString("yyyy") + "-" + tarih.ToString("MM") + "-" + tarih.ToString("dd") + " " + tarih.ToString("t");
    return s1;
    }

    public static DateTime ToSqlDateTimeWithSecond(DateTime tarih)
    {
    string s1 = tarih.ToString("yyyy") + "-" + tarih.ToString("MM") + "-" + tarih.ToString("dd") + " " + tarih.ToString("t") + ":" + tarih.Second.ToString();
    return DateTime.Parse(s1);
    }




  • benzer bir durum benimde başıma gelmişti. veri tabanında ki datetime olan kolonu datetime2 olarak değiştirdiğimde düzelmişti.
    girilen tarih datetime veri sınırları dışında kalıyor datetime2 olarak ayarladığımda bu sorunu atlatmıştım.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.