Ç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
  Quick Reportta Türkçe sorunu boreas 4 150 08-11-2019, Saat: 00:14
Son Yorum: boreas
  Fastreport barcod yazdirma sorunu TheEAK 15 1.042 07-11-2019, Saat: 15:57
Son Yorum: mcuyan
  SOAP WSDL | Tarihi sorunu ve C# import sorunu hk. pro_imaj 2 178 24-10-2019, Saat: 08:51
Son Yorum: sabanakman
  Datasnap free yapmama sorunu. seci20 1 108 24-10-2019, Saat: 08:16
Son Yorum: 3ddark
  cxgrid String alan sorunu HuseyinF 7 284 25-09-2019, Saat: 16:54
Son Yorum: HuseyinF



Konuyu Okuyanlar: 1 Ziyaretçi