Tarih Sorgusu hatası
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tarih Sorgusu hatası
var
Aybasi:TdateTime;
Ayear,Amonth,Aday:Word;
begin
DecodeDate(Date,Ayear,Amonth,Aday);
Aybasi:=EncodeDate(Ayear,Amonth,01);
AdoTable1.close;
AdoTable1.SQL.clear;
AdoTable1.SQL.Add('Select * from kar_zarar WHERE ');
AdoTable1.SQL.Add('(AdoTable1tarih.value >= '+#39+ FormatDateTime('dd.mm.yyyy',aybasi)+#39+' and AdoTable1tarih.value <= '+#39+FormatDateTime('dd.mm.yyyy',date)+#39+')');
AdoTable1.open;
yukarıdaki sorguda ne hata varki sorgulama da ya tüm kayıtlar geliyor yada database zaman aşımı ikazı veriyor.
Aybasi:TdateTime;
Ayear,Amonth,Aday:Word;
begin
DecodeDate(Date,Ayear,Amonth,Aday);
Aybasi:=EncodeDate(Ayear,Amonth,01);
AdoTable1.close;
AdoTable1.SQL.clear;
AdoTable1.SQL.Add('Select * from kar_zarar WHERE ');
AdoTable1.SQL.Add('(AdoTable1tarih.value >= '+#39+ FormatDateTime('dd.mm.yyyy',aybasi)+#39+' and AdoTable1tarih.value <= '+#39+FormatDateTime('dd.mm.yyyy',date)+#39+')');
AdoTable1.open;
yukarıdaki sorguda ne hata varki sorgulama da ya tüm kayıtlar geliyor yada database zaman aşımı ikazı veriyor.
-
- Üye
- Mesajlar: 508
- Kayıt: 30 Oca 2004 10:49
Kod: Tümünü seç
AdoTable1tarih.value
Re: Tarih Sorgusu hatası
SQL serverda tarih formatı yok. tdatetime var. dolaysıyla eşit demek biraz sorun. çünkü işin içinde saat dk da giriyor.Delphi08 yazdı:var
Aybasi:TdateTime;
Ayear,Amonth,Aday:Word;
begin
DecodeDate(Date,Ayear,Amonth,Aday);
Aybasi:=EncodeDate(Ayear,Amonth,01);
AdoTable1.close;
AdoTable1.SQL.clear;
AdoTable1.SQL.Add('Select * from kar_zarar WHERE ');
AdoTable1.SQL.Add('(AdoTable1tarih.value >= '+#39+ FormatDateTime('dd.mm.yyyy',aybasi)+#39+' and AdoTable1tarih.value <= '+#39+FormatDateTime('dd.mm.yyyy',date)+#39+')');
AdoTable1.open;
yukarıdaki sorguda ne hata varki sorgulama da ya tüm kayıtlar geliyor yada database zaman aşımı ikazı veriyor.
birde extra iş yapıyorsun. startofthemonth vs incele biraz.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Tarih Biçimi
SQL'e Hangi kullanıcı ile bağlandığınıza göre sorgulardaki tarih formatı da değişir. Windows NT Tümleşik Güvenliği kullanarak bağlanıyorsanız tarih formatı standart AY.GÜN.YIL biçinde olacaktır. Sizde sorguda GÜN.AY.YIL formatı kullandığınız için bu tür sorunlar yaşıyorsunuz. Aslında sorgularınızda parametre kullanarak çalışırsanız bu tür problemler yaşamazsınız.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Aynı sorun bende de var.
AdoQuery kullanıyorum, mdb veri tabanındaki tarih alanına göre sıralama yapıyor ama vt daki tarih alanının metin (string, text, alpha gibi) olması gerekiyor. Tarih / Saat yapınca hata veriyor.
Bu şekilde sıralama yapıyor ama %99 yanlış, kalan %1lik kısım ise iki tarihinde aynı verildiği zamanlarda çıkan doğru sonuç
Kullandığım kod:
AdoQuery kullanıyorum, mdb veri tabanındaki tarih alanına göre sıralama yapıyor ama vt daki tarih alanının metin (string, text, alpha gibi) olması gerekiyor. Tarih / Saat yapınca hata veriyor.
Bu şekilde sıralama yapıyor ama %99 yanlış, kalan %1lik kısım ise iki tarihinde aynı verildiği zamanlarda çıkan doğru sonuç

Kullandığım kod:
Kod: Tümünü seç
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('Select * From Tablo1 Where tarih Between '''+DateToStr(DateTimePicker1.date)+ ''' and '''+ DateToStr(DateTimePicker2.date) +'''');
AdoQuery1.Open;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Tarih Formatı
DateToStr fonksiyonu GÜN.AY.YIL formatında değer döndürür. Halbuki sorguda AY.GÜN.YIL formatı kullanılmalıdır. Mesela 1 Ocak 2006 ile 5 Ocak 2006 şartı verilirken tarih değerine verilen şart Where tarih Between '01.01.2006' and '01.05.2006' olacağına sizin kodunuzda Where tarih Between '01.01.2006' and '05.01.2006' şartı üretir ve bu da 1 Ocak 2006 ile 1 Mayıs 2006 arası anlamına gelmektedir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .