Arkadaşlar Merhaba ;
Programda DateTimePicker1 ve DateTimePicker2 var ve normal tarih aralığı giriyoruz "01-02-2019 / 01-02-2019" sonuç sıfır dönüyor SQL de baktığımda bu tarihli kayıtlar var sebebi ne olabilir ? Yardımcı olabilir misiniz?
EFaturaRapor.SQL.Add('WHERE KAYITTARIHI BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date;
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date;
(02-04-2019, Saat: 05:33)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Arkadaşlar Merhaba ;
Programda DateTimePicker1 ve DateTimePicker2 var ve normal tarih aralığı giriyoruz "01-02-2019 / 01-02-2019" sonuç sıfır dönüyor SQL de baktığımda bu tarihli kayıtlar var sebebi ne olabilir ? Yardımcı olabilir misiniz?
EFaturaRapor.SQL.Add('WHERE KAYITTARIHI BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date;
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date;
sql tarafında baktığın tarih formatı ile datetimepicker tarih formatı aynı mı ?
@
OZCANK Aşağıdaki yapıyı bir denermisin
bu yapıda programın hata verecekmi yoksa çalışacakmı çünkü 2 satırda yazdığım sadece veri tipleri dönüşümü yapılabiliyormu diye yazdım.
EFaturaRapor.SQL.Add('WHERE DateAdd(dd, 0, DateDiff(dd, 0, KAYITTARIHI)) BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := StrToDate(DateTimeToStr(DateTimePicker1.Date));
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := StrToDate(DateTimeToStr(DateTimePicker2.Date));
Eğer üstteki çalışıyorsa muhtemelen veritabanından gelen tarih kısmı datetime şeklinde ozaman aşağıdaki şekilde kullanabilirsin
EFaturaRapor.SQL.Add('WHERE DateAdd(dd, 0, DateDiff(dd, 0, KAYITTARIHI)) BETWEEN :ILKEFATTARIH AND :SONEFATTARIH');
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date;
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date
Merhaba,
database tarafındaki kayıtlarda saat bilgisi de kayıtlı ise gelmeme sebebi olabilir.
01.02.2019 00:00:01
01-02-2019/01-02-2019 aralığı dışında olur.
çünkü 01-02-2019 00:00:00 olarak düşünülür.
tarihi 01-02-2019/02-02-2019 olarak dener misiniz
Selamlar
ben bir butona yazdım kodu. Sen kendine göre düzenleyebilirsin.
procedure Tfrmmain.sBitBtn5Click(Sender: TObject);
var tarih1, tarih2: string;
begin
tarih1 :=copy(datetostr(DateTimePicker1.Date),7,4) + '-' + copy(datetostr(DateTimePicker1.Date),4,2) + '-' + copy(datetostr(DateTimePicker1.Date),1,2);
tarih2 :=copy(datetostr(DateTimePicker2.Date),7,4) + '-' + copy(datetostr(DateTimePicker2.Date),4,2) + '-' + copy(datetostr(DateTimePicker2.Date),1,2);
qryveri.SQL.Text :='select * from tagverileri where (tarih between'''+tarih1+''' and '''+tarih2+''')';
qryveri.Open;
end;
Merhaba,
EFaturaRapor.Parameters.ParamByName('ILKEFATTARIH').Value := DateTimePicker1.Date+EncodeTime(0,0,0,0);
EFaturaRapor.Parameters.ParamByName('SONEFATTARIH').Value := DateTimePicker2.Date+EncodeTime(23,59,59,999);
olarak dener misin
Ben MSSQL de şu şekilde kullanıyorum,
Kod:
FIS_.SQL.Add('WHERE TARIH Between CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR1.Date)+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR2.Date)+' 23:59:59'', 102)');
(04-04-2019, Saat: 12:43)m_ekici Adlı Kullanıcıdan Alıntı: [ -> ]Ben MSSQL de şu şekilde kullanıyorum,
Kod:
FIS_.SQL.Add('WHERE TARIH Between CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR1.Date)+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',TAR2.Date)+' 23:59:59'', 102)');
SQL Server'de güvenli tarih formatı:
http://www.delphican.com/showthread.php?...50#pid5750
Arkadaşlar ; Yardımlarınız için Emeğinize yüreğinize sağlık, Allah Razı olsun hepinize teşekkür ediyorum.
Sorunun cevabına gelince şu şekilde kod gönderen m_ekici ve csunguray arkadaşımızın yazdığını kullandım ve sorun çözüldü.
EFaturaRapor.SQL.Add('WHERE KAYITTARIHI BETWEEN CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',DateTimePicker1.Date)+' 00:00:00'', 102) and CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd',DateTimePicker2.Date)+' 23:59:59'', 102)');