Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[ ÇÖZÜLDÜ ]MSSQL VeriTabanına Tarih Kaydetme Hatası
#1
S.a

Mssql VeriTabanına Kayıt Eklerken Hata Alıyorum
Tarih Kısmını MSSQL Tarih Formatına 

TDateTime   TARIH_SAAT;
FormatDateTime("yyyy-mm-dd hh:nn",TARIH_SAAT)



Çevirip Başına 'Tek Tırnak ve Sonuna Tek Tırnak Ekliyorum Şöyle Oluyor '2019-08-30 07:38:22' 

Kayıt Ekleme Sorgu Hali

INSERT INTO GOREVDURUMLARI ( BLKODU ,  BLGRVKODU ,  Grubu ,  ADI ,  Tipi , Baslama_Tarihi, Islem_Suresi , SILINDI ) VALUES( '1', 'Açılış', 'Açılış',  'Açılış',  'Açılış', '2019-08-29 17:02' , '0', '0' )  ;

Hatası Kodu 

SQL Server The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Acaba Nerde Yanlış Yapıyorum
Yardımlarınız için allah razı olsun
Cevapla
#2
(30-08-2019, Saat: 07:46)theSinan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.S.a

Mssql VeriTabanına Kayıt Eklerken Hata Alıyorum
Tarih Kısmını MSSQL Tarih Formatına 

TDateTime   TARIH_SAAT;
FormatDateTime("yyyy-mm-dd hh:nn",TARIH_SAAT)



Çevirip Başına 'Tek Tırnak ve Sonuna Tek Tırnak Ekliyorum Şöyle Oluyor '2019-08-30 07:38:22' 

Kayıt Ekleme Sorgu Hali

INSERT INTO GOREVDURUMLARI ( BLKODU ,  BLGRVKODU ,  Grubu ,  ADI ,  Tipi , Baslama_Tarihi, Islem_Suresi , SILINDI ) VALUES( '1', 'Açılış', 'Açılış',  'Açılış',  'Açılış', '2019-08-29 17:02' , '0', '0' )  ;

Hatası Kodu 

[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 10.0][SQL Server]The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Acaba Nerde Yanlış Yapıyorum
Yardımlarınız için allah razı olsun

Büyük ihtimal ile İşletim sistemi tarih formatından kaynaklanıyor. komutta tarih ayracı - işletim sistemi tarafında /  ise hata oluşuyor.

Bu tip sorunları önlemek için @mcuyan beyin önerdiği yöntemi kullanıyorum.

8-02-2019, Saat: 16:17 (Son Düzenleme: 28-02-2019, Saat: 16:20, Düzenleyen: mcuyan.)
Hocam Uygulamanızın Startında Bölgesel ayarlardaki ondalıklı ve binlik basamak ayıracını standarta oturtun..

Projenizi Sağ Tık->ViewSource

Unitlerin altına:


begin
 Application.Initialize;
Application.UpdateFormatSettings := False;
SysUtils.FormatSettings.ThousandSeparator := '.';
SysUtils.FormatSettings.DecimalSeparator := ',';
SysUtils.FormatSettings.DateSeparator := '.';
SysUtils.FormatSettings.TimeSeparator := ':';
SysUtils.FormatSettings.ShortDateFormat := 'dd.mm.yyyy';
SysUtils.FormatSettings.ShortTimeFormat := 'hh:mm';
SysUtils.FormatSettings.LongTimeFormat := 'hh:mm';
SysUtils.FormatSettings.CurrencyString:='₺';
// Form create olayının üstünde yer almalı 
Application.Title := 'Form Caption';
Application.CreateForm(Tdm1, dm1);
Application.CreateForm(TForm3, Form3);
Application.Run;

end.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#3
Aslında ayar SQL Server tarafına gerekiyor gibi. Connection ile bağlandıktan sonra veya sorguyu çalıştırmadan önce "set dateformat ymd" komutunu çalıştırmanız gerekiyor gibi. Zira sorguda kullanılan tarih biçimi yıl, ay, gün şeklinde.
Cevapla
#4
(30-08-2019, Saat: 07:46)theSinan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.S.a

Mssql VeriTabanına Kayıt Eklerken Hata Alıyorum

Daha önce başka bir soruya verdiğim cevabı inceleyebilirsiniz. Umarım yararı olur.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#5
Ado ile benzer sorunu yasadim. Cozumu soyle idi.
TForm1.ADOConnection1AfterConnect(Sender: TObject);
begin
if Sender is TADOConnection then
 TADOConnection(Sender).Execute('set dateformat dmy');
end;
Cevapla
#6
INSERT Cümlesinde gönderilen tarihi

convert(VARCHAR, getdate(), 120)

şekilde yollayın sorun yaşamazsınız

convert(VARCHAR, '01.01.2019 11:11:10', 120)
Gibi

Eğer Saat yollamayacaksan

Tavsiyem

CONVERT(date,'01.01.2019',104)
Cevapla
#7
(30-08-2019, Saat: 07:46)theSinan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.S.a

Mssql VeriTabanına Kayıt Eklerken Hata Alıyorum
Tarih Kısmını MSSQL Tarih Formatına 

TDateTime   TARIH_SAAT;
FormatDateTime("yyyy-mm-dd hh:nn",TARIH_SAAT)



Çevirip Başına 'Tek Tırnak ve Sonuna Tek Tırnak Ekliyorum Şöyle Oluyor '2019-08-30 07:38:22' 

Kayıt Ekleme Sorgu Hali

INSERT INTO GOREVDURUMLARI ( BLKODU ,  BLGRVKODU ,  Grubu ,  ADI ,  Tipi , Baslama_Tarihi, Islem_Suresi , SILINDI ) VALUES( '1', 'Açılış', 'Açılış',  'Açılış',  'Açılış', '2019-08-29 17:02' , '0', '0' )  ;

Hatası Kodu 

[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 10.0][SQL Server]The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Acaba Nerde Yanlış Yapıyorum
Yardımlarınız için allah razı olsun


MS SQL Server'da dil veya bölge ayarı bağımlı olmayan güvenli tarih 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 tarih ve saat formatı ise 'yyyy-mm-ddThh:mi:ss.mmm'  .
WWW
Cevapla
#8
(01-09-2019, Saat: 14:45)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.
(30-08-2019, Saat: 07:46)theSinan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.S.a

Mssql VeriTabanına Kayıt Eklerken Hata Alıyorum
Tarih Kısmını MSSQL Tarih Formatına 

TDateTime   TARIH_SAAT;
FormatDateTime("yyyy-mm-dd hh:nn",TARIH_SAAT)



Çevirip Başına 'Tek Tırnak ve Sonuna Tek Tırnak Ekliyorum Şöyle Oluyor '2019-08-30 07:38:22' 

Kayıt Ekleme Sorgu Hali

INSERT INTO GOREVDURUMLARI ( BLKODU ,  BLGRVKODU ,  Grubu ,  ADI ,  Tipi , Baslama_Tarihi, Islem_Suresi , SILINDI ) VALUES( '1', 'Açılış', 'Açılış',  'Açılış',  'Açılış', '2019-08-29 17:02' , '0', '0' )  ;

Hatası Kodu 

[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 10.0][SQL Server]The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Acaba Nerde Yanlış Yapıyorum
Yardımlarınız için allah razı olsun


MS SQL Server'da dil veya bölge ayarı bağımlı olmayan güvenli tarih 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 tarih ve saat formatı ise 'yyyy-mm-ddThh:mi:ss.mmm'  .

S.a csunguray tarih Formatı  YYYY-MM-DD olduğundan Servis Uygulaması SYSTEM kullanıcısından Çalışıyor 
SYSTEM bölge ayarları ingilizce imiş 
Tarih Fotmatını

YYYYMMDD hh:nn:ss Yapınca Düzeldi 
Allah razı olsun
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Mssql ve Linux serdar 0 87 25-09-2019, Saat: 14:05
Son Yorum: serdar
  MSSQL StoreProcedure Performans Sorunu (Çözüldü) adelphiforumz 23 677 18-09-2019, Saat: 14:13
Son Yorum: Bay_Y
  Arama hatasi gonulali 8 350 27-08-2019, Saat: 09:25
Son Yorum: adelphiforumz
  String tarih ve saat alanını birleştirme kullanma cinarbil 9 1.393 22-08-2019, Saat: 00:25
Son Yorum: serdar
  MSSQL de Tarih Saat kriteri Arama Bay_Y 5 689 20-08-2019, Saat: 11:59
Son Yorum: serdar



Konuyu Okuyanlar: 1 Ziyaretçi