En iyi yanıtlayıcılar
sql server tarih sorunu

Soru
-
sql server tarih formatını yyyy-MM-dd olarak istiyor ama ben dd-MM-yyyy olarak kaydetmek istiyorum nasıl yapabilirim.
- Taşıyan Serkan Canseven 14 Temmuz 2015 Salı 06:23 (Gönderen: Visual C#)
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
- Yanıt Olarak İşaretleyen Serkan Canseven 28 Temmuz 2015 Salı 12:47
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 -
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.
göstermek istemiyorum kaydetmek istiyorum bu yüzden kayıt girerken dd-MM-yyyy bu formatta giriyorum.
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com -
-
girme
www.mvcblog.org
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com -
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
- Yanıt Olarak İşaretleyen Serkan Canseven 28 Temmuz 2015 Salı 12:47
-
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.
-
-
@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 ); }