iki tarih arasında saatler arası sorgulama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen ertank »

Kullandığınız FirebirdSQL sürümünü belirtmemişsiniz. Versiyon 2.5.5 ve sonrası için aşağıdaki şekilde istediğiniz sonucu alabilirsiniz:

Kod: Tümünü seç

SELECT *
FROM OLAYBILGINOTU
WHERE CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) >= :zaman1
  AND
  CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) <= :zaman2
ORDER BY INCELEMETARIHI, INCELEMESAATI
Burada dikkat etmeniz gereken zaman1 ve zaman2 parametrelerine timestamp veya datetime (tarih ve saat) türünde bilgi vermeniz gerektiğidir. Sadece date (tarih) türünde bilgi verirseniz sonuç yanlış olacaktır.
En son ertank tarafından 19 Tem 2017 09:10 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Merhaba,

Öncelikle çok teşekkür ederim. Evet sürüm vermeyi unuttum. Kodun uygulanacağı programda firebird 2.5 kullanıldı. Zahmetimden dolayı özür dilerim sormak istediğim bir şey var. anladığım kadarı ile datetime kullanmamı yani tarih ve saatin yan yana olmasını belirtmişsin.

yani parametre girişi yaptığım cxdateedit içerisine hem tarih hem saat verisi girmeliyim, vermiş olduğunuz kod kümesi de bunları iki ayrı vt alanında tutulan verileri birleştirerek sorgulama yapacak ve sonucu verecek. doğru anlamışımdır inşeallah.

teşekkür ve saygı ile yarın inşeallah denememi yapacağım, zira evde program kurulu değil.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen ertank »

Merhaba,

TcxDateEdit bileşeninin aşağıdaki özelliklerini düzenlediğiniz zaman

Kod: Tümünü seç

TcxDateEdit.Properties.Kind := ckDateTime;
TcxDateEdit.Properties.SaveTime := True;
TcxDateEdit.Properties.ShowTime := True;
Query parametresini aşağıdakine benzer şekilde verebilirsiniz

Kod: Tümünü seç

Query.ParamByName('tarih1').AsDateTime := cxDateEdit1.Date;
Query.ParamByName('tarih2').AsDateTime := cxDateEdit2.Date;
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Merhaba,

Bizde firebird 2.0 kurulu imiş. kaldırıp yerine 2.5.5 kurdum. program çalışıyor verilere erişebiliyorum. gönderdiğiniz kodu çalıştırmak istediğimde ise
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 11, column 3.
CAST.

hatası alıyorum. birinci CAST komutunu işliyor fakat ikinci CAST komutuna geldiğinde ise yukarıdaki hatayı veriyor.

ne diyeyim bu gibi hatalarda pek maharetli değilim çözmek için. teşekkür ve saygı ile kolay gelsin
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen ertank »

Merhaba,

SQL'i eksik göndermişim. Az önce düzelttim. Yukarıdaki SQL komutunu kullanırsanız sorun çözülmüş olması gerekli. Yapılan değişiklik aşağıdaki gibidir.

Kod: Tümünü seç

  AS TIMESTAMP) >= :zaman1
  AND
  CAST(
AND ifadesini eklemeyi unutmuşum.
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Merhaba,

@ertank ustam öncelikle teşekkür ederim. Bir müşkülümü giderdiniz, Allah'ta sizin müşküllerinizi gidersin. Sabah ilk işim düzeltmeyi yapıp denemek oldu, zaman1=07.07.2017 08.00.00 ile zaman2=10.07.2017 08.00.00 arası sorgulama çektim. ayın yedisinde gece 12 den sonra gidilen olaylardan başlıyor ayın sekizinde tümünü ayın dokuzunda ise gece 23.59 a kadar olanları veriyor ama ayın 10 nunda zaman2 de belirttiğimiz tarih ve saate kadar olan kısmı vermiyor. yani son parametreyi yazıldığı gibi değil bir önceki gününde sonlandırıyor. kayıtlarda ayın 10'nunda sabah sekize kadar iki olayımız var bunları sorgu sonucunda göremiyoruz.

Lütfen hazırcılık olarak algılamayın. sorgulama tekniklerinde ilk defa cast vb. işlemleri kullanıyorum. birde kendi başıma -yüzde 99,9 olarak bu forumdan edindiğim bilgiler doğrultusunda- programı geliştiriyorum.

ayrıca sorun çözülürse forumada kaynak oluşturmuş olur.

teşekkür ve saygı ile
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Merhaba,

sanırım kodda bulunan saat işleri parametre olarak belirtilse bile başlangıcı gece yarısı olarak başlıyor. anlamadığım konu ise bitiş parametresinde ayın 10 nunda 06.15 ve 07.55 saatlerinde iki olay bulunmasına rağmen 06.15'i vermesi son olayı vermemesi. tarihi 11 yapsamda değişen olmadı.

anlayacağımız başlangıçta 08.00 olarak değil 00.00 olarak baz alıyor. bitişte ise naptığını anlamadım :))
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen ertank »

bilal09 yazdı:Merhaba,

sanırım kodda bulunan saat işleri parametre olarak belirtilse bile başlangıcı gece yarısı olarak başlıyor. anlamadığım konu ise bitiş parametresinde ayın 10 nunda 06.15 ve 07.55 saatlerinde iki olay bulunmasına rağmen 06.15'i vermesi son olayı vermemesi. tarihi 11 yapsamda değişen olmadı.

anlayacağımız başlangıçta 08.00 olarak değil 00.00 olarak baz alıyor. bitişte ise naptığını anlamadım :))
SQL kısmını test ettiğim kadarıyla sorun yok. Mevcut kaynak kodu paylaşabilir misiniz? Sorun orada sanki.
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Query

Kod: Tümünü seç

SELECT *
FROM OLAYBILGINOTU
WHERE CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) >= :zaman1
 OR
  CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) <= :zaman2
ORDER BY INCELEMETARIHI, INCELEMESAATI
button onclick

Kod: Tümünü seç

procedure TFrmOlayBilgiNotuSorgu.cxButton1Click(Sender: TObject);
begin
  bilginotudxmemdata.Close;
  bilginotudxmemdata.Open;
  try
    bilginotusorguibqry.Close;
    bilginotusorguibqry.ParamByName('zaman1').AsDate:=cxdateedit1.Date;
    bilginotusorguibqry.ParamByName('zaman2').AsDate:=cxdateedit2.Date;

    bilginotusorguibqry.Open;
    bilginotusorguibqry.Last;
    cxgroupbox2.Caption:='SORGULAMA SONUCU TOPLAM :'+inttostr(bilginotusorguibqry.RecordCount)+' KAYIT BULUNDU';
      if bilginotusorguibqry.IsEmpty then
      begin
        cxgroupbox2.Caption:='SORGULAMA SONUCU KAYIT BULUNAMADI';
      end;
  finally
    bilginotusorguibqry.First;
    while not bilginotusorguibqry.Eof do
    begin
      bilginotudxmemdata.Append;

      bilginotudxmemdata.FieldByName('BILGINOTUID').AsInteger:=
              bilginotusorguibqry.fieldbyname('BILGINOTUID').AsInteger;

      bilginotudxmemdata.FieldByName('OLAYID').AsInteger:=
              bilginotusorguibqry.fieldbyname('OLAYID').AsInteger;

      bilginotudxmemdata.FieldByName('DMID').AsInteger:=
              bilginotusorguibqry.fieldbyname('DMID').AsInteger;

      bilginotudxmemdata.FieldByName('DIGEROLAYID').AsInteger:=
              bilginotusorguibqry.fieldbyname('DIGEROLAYID').AsInteger;

      bilginotudxmemdata.FieldByName('TUTANAKID').AsInteger:=
              bilginotusorguibqry.fieldbyname('TUTANAKID').AsInteger;

      bilginotudxmemdata.FieldByName('ILKODU').AsInteger:=
              bilginotusorguibqry.fieldbyname('ILKODU').AsInteger;

      bilginotudxmemdata.FieldByName('ILCEKODU').AsInteger:=
              bilginotusorguibqry.fieldbyname('ILCEKODU').AsInteger;

      bilginotudxmemdata.FieldByName('YIL').AsInteger:=
              bilginotusorguibqry.fieldbyname('YIL').AsInteger;

      bilginotudxmemdata.FieldByName('SAYI').AsInteger:=
              bilginotusorguibqry.fieldbyname('SAYI').AsInteger;

      bilginotudxmemdata.FieldByName('EKSAYI').AsInteger:=
              bilginotusorguibqry.fieldbyname('EKSAYI').AsInteger;

      bilginotudxmemdata.FieldByName('BIRIM').AsString:=
              bilginotusorguibqry.fieldbyname('BIRIM').AsString;

      bilginotudxmemdata.FieldByName('OLAYTURU').AsString:=
              bilginotusorguibqry.fieldbyname('OLAYTURU').AsString;

      bilginotudxmemdata.FieldByName('OLAYISLENISSEKLI').AsString:=
              bilginotusorguibqry.fieldbyname('OLAYISLENISSEKLI').AsString;

      bilginotudxmemdata.FieldByName('INCELEMETARIHI').AsDateTime:=
              bilginotusorguibqry.fieldbyname('INCELEMETARIHI').AsDateTime;

      bilginotudxmemdata.FieldByName('INCELEMESAATI').AsDateTime:=
              bilginotusorguibqry.fieldbyname('INCELEMESAATI').AsDateTime;

      bilginotudxmemdata.FieldByName('OLAYADRESI').AsString:=
              bilginotusorguibqry.fieldbyname('OLAYADRESI').AsString;

      bilginotudxmemdata.FieldByName('BULGULAR').AsString:=
              bilginotusorguibqry.fieldbyname('BULGULAR').AsString;

      bilginotudxmemdata.FieldByName('MUSTEKI').AsString:=
              bilginotusorguibqry.fieldbyname('MUSTEKI').AsString;

      bilginotudxmemdata.FieldByName('CALINANLAR').AsString:=
              bilginotusorguibqry.fieldbyname('CALINANLAR').AsString;

      bilginotudxmemdata.FieldByName('INCELEMESONUCU').AsString:=
              bilginotusorguibqry.fieldbyname('INCELEMESONUCU').AsString;

      bilginotudxmemdata.FieldByName('DUZENLEYEN').AsInteger:=
              bilginotusorguibqry.fieldbyname('DUZENLEYEN').AsInteger;

      bilginotudxmemdata.FieldByName('DUZENLEMETARIHI').AsDateTime:=
              bilginotusorguibqry.fieldbyname('DUZENLEMETARIHI').AsDateTime;

      bilginotudxmemdata.Post;
      bilginotusorguibqry.Next;
    end;
  end;
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Merhaba,

sorunu buldum zannettim parametre verirken .asdate kullanmışım .asdatetime olarak düzelttim sorguyu başlattım fakat bu kez daha kötü oldu. ilk başlangıç tarih ve saat bilgisinden önce olan neredeyse iki aylık geriye dönük veriler geldi.

07.07.2017 08:00:00 ile 10.07.2017 08:00:00 şeklinde çekmiş olduğum sorgunun sonucu 23.05.2017 21:00:00 ile 10.07.2017 06:15:00 olarak 519 kayıt olarak döndü.

kafa karıştırıcı bir durum kolay gelsin
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen ertank »

bilal09 yazdı:Merhaba,

sorunu buldum zannettim parametre verirken .asdate kullanmışım .asdatetime olarak düzelttim sorguyu başlattım fakat bu kez daha kötü oldu. ilk başlangıç tarih ve saat bilgisinden önce olan neredeyse iki aylık geriye dönük veriler geldi.

07.07.2017 08:00:00 ile 10.07.2017 08:00:00 şeklinde çekmiş olduğum sorgunun sonucu 23.05.2017 21:00:00 ile 10.07.2017 06:15:00 olarak 519 kayıt olarak döndü.

kafa karıştırıcı bir durum kolay gelsin
SQL komutunu yanlış kullanmışsınız. AND yerine OR eklemişsiniz. Aşağıdaki şekilde olmalı:

Kod: Tümünü seç

SELECT *
FROM OLAYBILGINOTU
WHERE CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) >= :zaman1
 AND
  CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) <= :zaman2
ORDER BY INCELEMETARIHI, INCELEMESAATI
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Merhaba,

@ertank ustam, şimdi kafam karıştı işte parametrede asdatetime düzeltmesini or ile mi yaptım and ile mi yaptım hatırlamıyorum. inşeallah en kısa sürede deneyip sonucu bildireceğim :((
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen ertank »

Aşağıdaki şekilde deneyebilir misiniz?

Kod: Tümünü seç

  bilginotudxmemdata.Close();
  bilginotudxmemdata.Open();
  try
    bilginotusorguibqry.Close();
    bilginotusorguibqry.SQL.Clear();
    bilginotusorguibqry.SQL.Add('SELECT *');
    bilginotusorguibqry.SQL.Add('FROM OLAYBILGINOTU');
    bilginotusorguibqry.SQL.Add('WHERE CAST(');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' )');
    bilginotusorguibqry.SQL.Add('AS TIMESTAMP) >= :zaman1');
    bilginotusorguibqry.SQL.Add('AND');
    bilginotusorguibqry.SQL.Add('CAST(');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||');
    bilginotusorguibqry.SQL.Add('LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' )');
    bilginotusorguibqry.SQL.Add('AS TIMESTAMP) >= :zaman2');
    bilginotusorguibqry.SQL.Add('ORDER BY INCELEMETARIHI, INCELEMESAATI');

    bilginotusorguibqry.ParamByName('zaman1').AsDateTime := cxdateedit1.Date;
    bilginotusorguibqry.ParamByName('zaman2').AsDateTime := cxdateedit2.Date;

    bilginotusorguibqry.Open();
    bilginotusorguibqry.Last;
    cxgroupbox2.Caption := 'SORGULAMA SONUCU TOPLAM :' + IntToStr(bilginotusorguibqry.RecordCount) + ' KAYIT BULUNDU';
    if bilginotusorguibqry.IsEmpty then
    begin
      cxgroupbox2.Caption:='SORGULAMA SONUCU KAYIT BULUNAMADI';
    end;
  finally
    bilginotusorguibqry.First();
    while not bilginotusorguibqry.Eof do
    begin
      bilginotudxmemdata.Append();

      bilginotudxmemdata.FieldByName('BILGINOTUID').AsInteger:=
              bilginotusorguibqry.fieldbyname('BILGINOTUID').AsInteger;

      bilginotudxmemdata.FieldByName('OLAYID').AsInteger:=
              bilginotusorguibqry.fieldbyname('OLAYID').AsInteger;

      bilginotudxmemdata.FieldByName('DMID').AsInteger:=
              bilginotusorguibqry.fieldbyname('DMID').AsInteger;

      bilginotudxmemdata.FieldByName('DIGEROLAYID').AsInteger:=
              bilginotusorguibqry.fieldbyname('DIGEROLAYID').AsInteger;

      bilginotudxmemdata.FieldByName('TUTANAKID').AsInteger:=
              bilginotusorguibqry.fieldbyname('TUTANAKID').AsInteger;

      bilginotudxmemdata.FieldByName('ILKODU').AsInteger:=
              bilginotusorguibqry.fieldbyname('ILKODU').AsInteger;

      bilginotudxmemdata.FieldByName('ILCEKODU').AsInteger:=
              bilginotusorguibqry.fieldbyname('ILCEKODU').AsInteger;

      bilginotudxmemdata.FieldByName('YIL').AsInteger:=
              bilginotusorguibqry.fieldbyname('YIL').AsInteger;

      bilginotudxmemdata.FieldByName('SAYI').AsInteger:=
              bilginotusorguibqry.fieldbyname('SAYI').AsInteger;

      bilginotudxmemdata.FieldByName('EKSAYI').AsInteger:=
              bilginotusorguibqry.fieldbyname('EKSAYI').AsInteger;

      bilginotudxmemdata.FieldByName('BIRIM').AsString:=
              bilginotusorguibqry.fieldbyname('BIRIM').AsString;

      bilginotudxmemdata.FieldByName('OLAYTURU').AsString:=
              bilginotusorguibqry.fieldbyname('OLAYTURU').AsString;

      bilginotudxmemdata.FieldByName('OLAYISLENISSEKLI').AsString:=
              bilginotusorguibqry.fieldbyname('OLAYISLENISSEKLI').AsString;

      bilginotudxmemdata.FieldByName('INCELEMETARIHI').AsDateTime:=
              bilginotusorguibqry.fieldbyname('INCELEMETARIHI').AsDateTime;

      bilginotudxmemdata.FieldByName('INCELEMESAATI').AsDateTime:=
              bilginotusorguibqry.fieldbyname('INCELEMESAATI').AsDateTime;

      bilginotudxmemdata.FieldByName('OLAYADRESI').AsString:=
              bilginotusorguibqry.fieldbyname('OLAYADRESI').AsString;

      bilginotudxmemdata.FieldByName('BULGULAR').AsString:=
              bilginotusorguibqry.fieldbyname('BULGULAR').AsString;

      bilginotudxmemdata.FieldByName('MUSTEKI').AsString:=
              bilginotusorguibqry.fieldbyname('MUSTEKI').AsString;

      bilginotudxmemdata.FieldByName('CALINANLAR').AsString:=
              bilginotusorguibqry.fieldbyname('CALINANLAR').AsString;

      bilginotudxmemdata.FieldByName('INCELEMESONUCU').AsString:=
              bilginotusorguibqry.fieldbyname('INCELEMESONUCU').AsString;

      bilginotudxmemdata.FieldByName('DUZENLEYEN').AsInteger:=
              bilginotusorguibqry.fieldbyname('DUZENLEYEN').AsInteger;

      bilginotudxmemdata.FieldByName('DUZENLEMETARIHI').AsDateTime:=
              bilginotusorguibqry.fieldbyname('DUZENLEMETARIHI').AsDateTime;

      bilginotudxmemdata.Post();
      bilginotusorguibqry.Next();
    end;
  end;
bilal09
Üye
Mesajlar: 26
Kayıt: 28 Haz 2017 10:21

Re: iki tarih arasında saatler arası sorgulama

Mesaj gönderen bilal09 »

Kod: Tümünü seç

SELECT *
FROM OLAYBILGINOTU
WHERE CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) >= :zaman1
 AND
  CAST(
  LPAD( EXTRACT( YEAR FROM INCELEMETARIHI ), 4, '0' ) || '-' ||
  LPAD( EXTRACT( MONTH FROM INCELEMETARIHI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( DAY FROM INCELEMETARIHI ), 2, '0' ) || ' ' ||
  LPAD( EXTRACT( HOUR FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( EXTRACT( MINUTE FROM INCELEMESAATI ), 2, '0' ) || '-' ||
  LPAD( TRUNC( EXTRACT( SECOND FROM INCELEMESAATI ) ), 2, '0' ) 
  AS TIMESTAMP) <= :zaman2
ORDER BY INCELEMETARIHI, INCELEMESAATI
Merhaba @ertank ustam, öncelikle çok özür diliyorum. ufak bir ayrıntıyı unutmuşum ve o sebeple sonuç eksik dönüyor. Sonrada çok teşekkür ederim, sıkılmadan sabırla yardım etmeye çalıştınız. yukarıda son halini belirttiğim kodunuz ile sorunsuz çalıştı ve istenilen sonuç döndü. gördüğünüz gibi kod ta baştan beri verdiğiniz aynı kod.

genelde sorgularım master tablo üzerinde olduğu için küçük bir ayrıntıyı kaçırmışım. bilgi notu verileri bilginotu tablosunda tutuluyor ve yukarıdaki kod bilginotu tablosundan sorgu çekiyor. haliyle veri girilmemiş ise (master tabloya bağlı olarak bilgi notu oluşturulmamış ise) sonuç dönmeyecek ve bize eksik gibi gelecek. tamamiyle benim hatam tekrar özür dilerim.

teşekkür ve saygı ile kolay gelsin.
Cevapla