none
sql server tarih sorunu RRS feed

Yanıtlar

  • Merhaba,

    Sadece giriş yaparken kullandığın formatı değiştirmek istediğini anlıyorum, bu durumda bu aslında senin o anda SQL Server Instance'ına giriş yapmak için kullandığın Login'in Default Language ayarıyla ilgili bir durum.

    Eğer aşağıdaki örnekteki gibi Login'inin Default Language ayarını Turkish olarak değiştirirsen, o zaman dd-MM-yyyy şeklinde INSERT işlemi yapabilirsin.

    ALTER LOGIN [WIN-I7VEIF1DJM7\Ekrem Onsoy] WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[Türkçe]

    Not: Default_database veya Login'inin başka ayarları daha farklıysa lütfen onları da uygun bir şekilde düzenlemeyi unutma.

    Bu değişikliği yaptıktan sonra SQL Server Instance'ına tekrar bağlan ve dd-MM-yyyy şeklinde INSERT işlemi yapmayı tekrar dene.


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com

    14 Temmuz 2015 Salı 09:15

Tüm Yanıtlar

  • sql server iki adet 32 bitlik sayı olarak kayderder yyyy-MM-dd değil. Onun için siz yyyy-MM-dd kaydedin bunu göstereceğiniz yerde istediğiniz formatla gösterin.

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    13 Temmuz 2015 Pazartesi 17:49
  • sql server iki adet 32 bitlik sayı olarak kayderder yyyy-MM-dd değil. Onun için siz yyyy-MM-dd kaydedin bunu göstereceğiniz yerde istediğiniz formatla gösterin.

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    göstermek istemiyorum kaydetmek istiyorum bu yüzden kayıt girerken dd-MM-yyyy bu formatta giriyorum.
    13 Temmuz 2015 Pazartesi 17:54
  • girme


    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    13 Temmuz 2015 Pazartesi 17:55
  • girme


    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    olur program hissi kablel vuku olarak girilmek istenen tarihi kendi girsin :)
    13 Temmuz 2015 Pazartesi 18:07
  • Merhaba,

    Sadece giriş yaparken kullandığın formatı değiştirmek istediğini anlıyorum, bu durumda bu aslında senin o anda SQL Server Instance'ına giriş yapmak için kullandığın Login'in Default Language ayarıyla ilgili bir durum.

    Eğer aşağıdaki örnekteki gibi Login'inin Default Language ayarını Turkish olarak değiştirirsen, o zaman dd-MM-yyyy şeklinde INSERT işlemi yapabilirsin.

    ALTER LOGIN [WIN-I7VEIF1DJM7\Ekrem Onsoy] WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[Türkçe]

    Not: Default_database veya Login'inin başka ayarları daha farklıysa lütfen onları da uygun bir şekilde düzenlemeyi unutma.

    Bu değişikliği yaptıktan sonra SQL Server Instance'ına tekrar bağlan ve dd-MM-yyyy şeklinde INSERT işlemi yapmayı tekrar dene.


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com

    14 Temmuz 2015 Salı 09:15
  • Merhabalar Bu yöntemi hiç uygulamadım ama bazı sorgularımda tarih ile aldığım hataları 

    set dateformat dmy ile aşıyorum.

    burada aslında kayıt y-m-d olarak var ama set dateformat dmy den sonra d-m-y olarak sorgularımı alabiliyorum.

    ama sizin söylediğiniz ayarlamarıda gözden geçireceğim.

    8 Ağustos 2015 Cumartesi 05:51
  • Merhaba,

    Öncelikle SQL Server üzerindeki tarih sutununuzun data tipi nvarchar(50) ise;

    cmd1.Parameters.AddWithValue("@PARAMETRENİZ",  DateTime.Now.ToString("dd/MM/yyyy"));


    Şeklinde kayıt ettirebilirsiniz.

    7 Eylül 2015 Pazartesi 14:10
  • @AlkanT,

    SQL server'da tarihsaat verilerini nvarchar, ya da varchar olarak tutmayin. Normal DateTime, Date data tiplerini kullanin o zaman boyle problemleriniz hic olmaz.

    @Osman Direk,

    set dateformat dmy 

    dolayli bir cozum ancak gerekli degil. 

    Alter login ....ile login ayarlarini degistirmek de gereksiz bir cozum.

    Önay'in soyledigi dogru. SQL server tarihsaat degerlerini belli bir formatta beklemiyor ve veritabani seviyesinde sayisal olarak sakliyor. Yani tum yapilmasi gereken SQL server'a tarihsaat degerini string olarak degil, normal DateTime olarak vermek o kadar. Illaki string olarak verecekseniz, o zaman ODBC canonical format server ayarlari ne olursa olsun taniniyor ve "yyyy/MM/dd hh:mm:ss" seklinde.

    C# ile ornek vermek gerekirse:

    string sql = @"
      declare @ornek table (id int, tarih DateTime);
      insert into @ornek (id, tarih) values (1, @tarih);
    
      select Tarih from @ornek; ";
    
    using(SqlConnection con =new SqlConnection(@"server=.\SQLExpress;Database=Test;Trusted_connection=yes"))
    {
       var komut = new SqlCommand(sql, con);
       komut.Parameters.AddWithValue( "@tarih", DateTime.Now );
       
       con.Open();
       var v = (DateTime?)komut.ExecuteScalar();
       con.Close();
    
       Console.WriteLine( v );   
    }
    
    

    7 Eylül 2015 Pazartesi 14:28