Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
SQl tarih Sorunu
#1
Herkese hayırlı istirahatler ..

Aşağıda anlatmak istedim umarım anlatabilmişimdir. Windows Tarih ayarım görüldüğü gibi SQl üzerinden de Windowsdakini kullan ı seçtim , Delphi de anaformumun içine tarih formatını set etmeye çalıştım , Ama ne yaptıysam kayderken yine İngilizce formatında farklı kaydediyor sağ alt köşede bir örneği var buna kayıt işlemlerinde sıkıntıya sebeb oluyor.
Bu konuda örneride bulunabilecek biri varsa çok sevinirim.

Şimdiden Teşekkürler iyi dinlenmeler.




E9IZAS.jpg
Cevapla
#2
Merhaba 
Msql 'in tarih kayıt formatı yyyy-mm-dd şeklindedir. 
Siz veri tablosuna farklı format mı gırmek ıstıyorsunuz? veya
Dephi tarafında istediğiniz formattamı göstermeye caışıyorsunuz?

eğer ado kullanıyorsanız

procedure TData.ADOConnection1AfterConnect(Sender: TObject);
begin
if Sender is TADOConnection then TADOConnection(Sender).Execute('set dateformat dmy');
end;

yapmanız sorunu cozebilir
Cevapla
#3
(09-11-2019, Saat: 09:34)serdar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba 
Msql 'in tarih kayıt formatı yyyy-mm-dd şeklindedir. 
Siz veri tablosuna farklı format mı gırmek ıstıyorsunuz? veya
Dephi tarafında istediğiniz formattamı göstermeye caışıyorsunuz?

eğer ado kullanıyorsanız

procedure TData.ADOConnection1AfterConnect(Sender: TObject);
begin
if Sender is TADOConnection then TADOConnection(Sender).Execute('set dateformat dmy');
end;

yapmanız sorunu cozebilir

Öncelikle teşekkür ediyorum cevap için .

Doğrudur ado kullanıyorum , aslında sorunum şu StoreProcedure ile yaptığım kayıtlarda sorun yaşıyorum tarih gönderirken tarih boş ise sorun oluyor bunun önüne geçmek için bir çözüm arıyordum.
Cevapla
#4
Ben o durumlarda
Adosp.FieldByName('Tarih').Asvariant:=null;
şeklinde kullanıyorum. Bi deneyin isterseniz
Cevapla
#5
Teşekkür ederim sağolun Hemen deniyorum.
Cevapla
#6
(09-11-2019, Saat: 09:24)Bay_Y Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Herkese hayırlı istirahatler ..

Aşağıda anlatmak istedim umarım anlatabilmişimdir. Windows Tarih ayarım görüldüğü gibi SQl üzerinden de Windowsdakini kullan ı seçtim , Delphi de anaformumun içine tarih formatını set etmeye çalıştım , Ama ne yaptıysam kayderken yine İngilizce formatında farklı kaydediyor sağ alt köşede bir örneği var buna kayıt işlemlerinde sıkıntıya sebeb oluyor.
Bu konuda örneride bulunabilecek biri varsa çok sevinirim.

Şimdiden Teşekkürler iyi dinlenmeler.

MS SQL Server'da dil veya bölge ayarı bağımlı olmayan en güvenli TARİH formatı 'YYYYMMDD' şeklindedir. 'YYYY-MM-DD' şeklindeki tarih formatı bölge ve dil ayarlarına bağımlıdır ve farklı dil ve bölge ayarlarında farklı davranış gösterir. Güvenli TARİH + SAAT formatı ise 'yyyy-mm-ddThh:mi:ss.mmm' .

Daha önceki bir gönderide bilgi vermeye çalışmıştım. Onu incelerseniz faydalı olacağına inanıyorum.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#7
Bu konuda bir noktayı da belirtmek istiyorum. Tarihi farklı formatta gösteriyor, kayıt formatı hepsinde aynı. SQL server'in nasıl tuttuğunu bilmiyorum ama Delphi'de TDateTime tipi aslında Double'den (ya da Extended veya uygun farklı bir kayar noktalı sayı tipinden) türemiştir. Tarihi nasıl tuttuğuna gelirsek, 1-1-1900'den başlamak üzere gün sayısını integer kısmında, saat-dakika ve saniye'leri ise desimal kısımda tutar. Saat-dakika-saniyeleri 24 saate bölerek burada tutar.
Bu nedenle bir TDateTime değişkeninin desimal kısmını sıfırladığınız zaman TDate elde edersiniz.
Bu format şekli aslında birçok hesaplamayı da kolaylaştırır. Örneğin 2 tarih arasında kaç gün olduğunu bulmak için integer kısımlarının farkını almak yeterlidir.

MSSQL'de de bu şekilde, ancak onun tarih başlangıcı 31-12-1899'du sanırım. Yani böyle enteresan bir fark vardı. Bu da başıma bayağı bir dert olmuştu.
Yine MSSQL'de tarih formatını set edebileceğiniz bir komut da var.

SET DATEFORMAT { format | @format_var }
şeklinde kullanılıyor. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. Eğer her SQL komutundan önce bunu kullanırsanız sorun ortadan kalkar sanırım.
Cevapla
#8
(09-11-2019, Saat: 13:17)csunguray Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(09-11-2019, Saat: 09:24)Bay_Y Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Herkese hayırlı istirahatler ..

Aşağıda anlatmak istedim umarım anlatabilmişimdir. Windows Tarih ayarım görüldüğü gibi SQl üzerinden de Windowsdakini kullan ı seçtim , Delphi de anaformumun içine tarih formatını set etmeye çalıştım , Ama ne yaptıysam kayderken yine İngilizce formatında farklı kaydediyor sağ alt köşede bir örneği var buna kayıt işlemlerinde sıkıntıya sebeb oluyor.
Bu konuda örneride bulunabilecek biri varsa çok sevinirim.

Şimdiden Teşekkürler iyi dinlenmeler.

MS SQL Server'da dil veya bölge ayarı bağımlı olmayan en güvenli TARİH formatı 'YYYYMMDD' şeklindedir. 'YYYY-MM-DD' şeklindeki tarih formatı bölge ve dil ayarlarına bağımlıdır ve farklı dil ve bölge ayarlarında farklı davranış gösterir. Güvenli TARİH + SAAT formatı ise 'yyyy-mm-ddThh:mi:ss.mmm' .

Daha önceki bir gönderide bilgi vermeye çalışmıştım. Onu incelerseniz faydalı olacağına inanıyorum.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.


Teşekkür ederim , Genelde bende bunu kullanmaya çalışıyorum.

(09-11-2019, Saat: 15:40)mustafaozpinar Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Bu konuda bir noktayı da belirtmek istiyorum. Tarihi farklı formatta gösteriyor, kayıt formatı hepsinde aynı. SQL server'in nasıl tuttuğunu bilmiyorum ama Delphi'de TDateTime tipi aslında Double'den (ya da Extended veya uygun farklı bir kayar noktalı sayı tipinden) türemiştir. Tarihi nasıl tuttuğuna gelirsek, 1-1-1900'den başlamak üzere gün sayısını integer kısmında, saat-dakika ve saniye'leri ise desimal kısımda tutar. Saat-dakika-saniyeleri 24 saate bölerek burada tutar.
Bu nedenle bir TDateTime değişkeninin desimal kısmını sıfırladığınız zaman TDate elde edersiniz.
Bu format şekli aslında birçok hesaplamayı da kolaylaştırır. Örneğin 2 tarih arasında kaç gün olduğunu bulmak için integer kısımlarının farkını almak yeterlidir.

MSSQL'de de bu şekilde, ancak onun tarih başlangıcı 31-12-1899'du sanırım. Yani böyle enteresan bir fark vardı. Bu da başıma bayağı bir dert olmuştu.
Yine MSSQL'de tarih formatını set edebileceğiniz bir komut da var.

SET DATEFORMAT { format | @format_var }
şeklinde kullanılıyor. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. Eğer her SQL komutundan önce bunu kullanırsanız sorun ortadan kalkar sanırım.

Bilgilendirme için çok teşekkürler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FireDac ile Mssql Veritabanı Adı sorunu serdar 9 426 15-01-2020, Saat: 23:22
Son Yorum: otonomi
  Datasnap büyük dosya gönderme sorunu. seci20 2 197 12-01-2020, Saat: 14:56
Son Yorum: seci20
  Balloon hint font sorunu. seci20 0 150 25-11-2019, Saat: 15:13
Son Yorum: seci20
  Fastreport barcod yazdirma sorunu TheEAK 16 1.731 21-11-2019, Saat: 12:51
Son Yorum: TheEAK
  Quick Reportta Türkçe sorunu boreas 4 349 08-11-2019, Saat: 00:14
Son Yorum: boreas



Konuyu Okuyanlar: 1 Ziyaretçi