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ı: 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ı: 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.
http://www.delphican.com/showthread.php?...50#pid5750
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. Şu adreste detaylı bilgi bulabilirsiniz. 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ı:
(09-11-2019, Saat: 09:24)Bay_Y Adlı Kullanıcıdan Alıntı: 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.
http://www.delphican.com/showthread.php?...50#pid5750


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

(09-11-2019, Saat: 15:40)mustafaozpinar Adlı Kullanıcıdan Alıntı: 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. Şu adreste detaylı bilgi bulabilirsiniz. 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
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 12 4.300 08-11-2023, Saat: 00:06
Son Yorum: berkan
  TCMB Kur Almada Explorer Sertifika Sorunu Adem Kurt 3 580 24-10-2023, Saat: 15:14
Son Yorum: RAD Coder
  program exe icon sorunu cvheneburi 9 2.726 19-10-2023, Saat: 15:04
Son Yorum: harunyl
  TThread.Synchronize çalışmama sorunu muratmutlu 3 587 10-10-2023, Saat: 12:16
Son Yorum: Tuğrul HELVACI
  FastReport detail tablo gösterim sorunu Frrst 12 1.730 14-07-2023, Saat: 17:10
Son Yorum: hi_selamlar



Konuyu Okuyanlar: 1 Ziyaretçi