Sql de Date ve Time Birleştirerek sorgulama yapma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Sql de Date ve Time Birleştirerek sorgulama yapma

Mesaj gönderen tayipk »

hepinize merhaba arkadaşlar aşağıdaki kodu bir türlü çalıştırıp olumlu sonuç alamadım sürekli parametre nesnesi eksik tanımlanmış hatası veriyor yapmak sql deki tabloda tek sütunda hem tarih hemde saat bilgisi tutuluyor belirtmiş olduğum tarih ve saat aralığındaki veriyi sorgulamak istiyorum ama başaramadım yardımlarınız bekliyorum arkadaşlar hepinize kolay gelsin.

Kod: Tümünü seç

DM1.QPerakendeler.Close;
DM1.QPerakendeler.SQL.Clear;
DM1.QPerakendeler.SQL.Text:='set dateformat dmy select * from TPerakende_Satislar where Satıis_Tarihi between Quotedstr('+DateToStr(Tarih1.Date)+TimeToStr(saat1.Time)+') and Quotedstr('+DateToStr(Tarih2.Date)+TimeToStr(saat2.Time)+')';
DM1.QPerakendeler.Open;
bu arada aşağıdaki kodla sql serverda sorgulama yapıp sonucu alabiliyorum ama bu kodu delphiye bir türlü uyarlayamadım arkadaşlar.

Kod: Tümünü seç

select * from TPerakende_Satislar where Satıis_Tarihi between '2014-03-30 00:00:00' and '2014-03-30 23:59:59'
Resim
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: Sql de Date ve Time Birleştirerek sorgulama yapma

Mesaj gönderen m_ekici »

Kod: Tümünü seç

Qry.sql.add(' WHERE TARIH Between CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TARIH)+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TARIH)+' 23:59:59'', 102)');
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Sql de Date ve Time Birleştirerek sorgulama yapma

Mesaj gönderen unicorn64 »

sorgularınızı parametreli olarak yazıp değerleri de query ye parametre üzerinden verirseniz tarih ve string alanlarla ayrıca uğraşmanıza gerek kalmaz
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Sql de Date ve Time Birleştirerek sorgulama yapma

Mesaj gönderen tayipk »

unicorn64 yazdı:sorgularınızı parametreli olarak yazıp değerleri de query ye parametre üzerinden verirseniz tarih ve string alanlarla ayrıca uğraşmanıza gerek kalmaz
ustam bilgine sağlık dediğin yöntemle çözdüm. benim gibi sıkıntı yaşayan arkadaşlar için çalışna kodlar aşağıdadır.m_ekici hocam sanada yardımın ayrıca teşekkürederim. çok sağolun arkdaşalr.

Kod: Tümünü seç

DM1.QPerakendeler.Close;
DM1.QPerakendeler.SQL.Clear;
DM1.QPerakendeler.SQL.Text:='set dateformat dmy select * from TPerakende_Satislar where Satıis_Tarihi between :t1 and :t2 ';
DM1.QPerakendeler.Parameters.ParamByName('t1').Value:=DateTimeToStr(Tarih1.Date+saat1.Time);
DM1.QPerakendeler.Parameters.ParamByName('t2').Value:=DateTimeToStr(Tarih2.Date+saat2.Time);
DM1.QPerakendeler.Open;
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Sql de Date ve Time Birleştirerek sorgulama yapma

Mesaj gönderen xxxjedixxx »

Yazdığınız yöntem yanlıştır. Şu an çalışmış gibi görünse de sorun çıkaracak bir yöntemdir. Tabloda DateTime tipindeki alan için string tipinde parametre veriyorsunuz. DateTimetoStr fonsiyonu, PC'deki bölgesel ayarlara göre değişik sonuçlar gösterir. Bu yüzden parametreyi aşağıdaki gibi datetime tipinde vermelisiniz.

Kod: Tümünü seç

DM1.QPerakendeler.Parameters.ParamByName('t1').DataType := ftDatetime;
DM1.QPerakendeler.Parameters.ParamByName('t2').DataType := ftDatetime;
DM1.QPerakendeler.Parameters.ParamByName('t1').Value:= Tarih1.Date + saat1.Time;
DM1.QPerakendeler.Parameters.ParamByName('t2').Value:= Tarih2.Date + saat2.Time;
Cevapla