iki tarih arası sorgulama

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: iki tarih arası sorgulama

Mesaj gönderen tuna »

query'e gönderdiğin kodu da yazarmısın.

Tarih aramasını yapabiliyorsa gerisi zaten çok basit. Sen tam olarak yazdığın kod bloğunu gönder bi bakalım.
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: iki tarih arası sorgulama

Mesaj gönderen Ertugrul »

Anladigim kadariyla veritabaninda iki adet tarih alani var, GIRISTARIHI ve CIKISTARIHI gibi. Asagidaki kod isinizi gorecektir;

Kod: Tümünü seç

  
  //Q: TADOQuery
  Q.Close;
  Q.SQL.Clear;
  Q.SQL.Add('SELECT * FROM REZERVASYON WHERE KORT=1 AND ');
  Q.SQL.Add('((BASLANGIC>=:P1 AND BASLANGIC<=:P2 ) OR (BITIS>=:P1 AND BITIS<=:P2 ) OR (BASLANGIC<=:P2 AND BITIS>=:P1 ))');
  Q.ParamByName('P1').Value := DTBAS.Date;  //TDateTimePicker
  Q.ParamByName('P2').Value := DTSON.Date - 1;
  Q.Open;
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: iki tarih arası sorgulama

Mesaj gönderen tuna »

Ertugrul yazdı:Anladigim kadariyla veritabaninda iki adet tarih alani var, GIRISTARIHI ve CIKISTARIHI gibi. Asagidaki kod isinizi gorecektir;

Kod: Tümünü seç

  
  //Q: TADOQuery
  Q.Close;
  Q.SQL.Clear;
  Q.SQL.Add('SELECT * FROM REZERVASYON WHERE KORT=1 AND ');
  Q.SQL.Add('((BASLANGIC>=:P1 AND BASLANGIC<=:P2 ) OR (BITIS>=:P1 AND BITIS<=:P2 ) OR (BASLANGIC<=:P2 AND BITIS>=:P1 ))');
  Q.ParamByName('P1').Value := DTBAS.Date;  //TDateTimePicker
  Q.ParamByName('P2').Value := DTSON.Date - 1;
  Q.Open;
Benim sorunum çözüldü @chasteeer adlı arkadaşında benzer problemi varmış ona yardım etmeye çalışıyorduk. Bu konunun altına devam etmiş. İsterseniz onun sorununa bir göz atın derim. İlginiz için teşekürler
fatmet
Üye
Mesajlar: 1
Kayıt: 14 May 2009 04:21

Re: iki tarih arası sorgulama

Mesaj gönderen fatmet »

herkese merhabalar benimde tarih ile alakalı bir sorunum var 01.04.2009 ile 31.04.2009 aralığındaki kayıtları listelemek istediğimde herhangi bir sorun yok kod çok güzel çalışıyor fakat bitiş tarihini 01.05.2009 tarihine aldığımda herhangi bir sonuç döndürmüyor bir türlü mantıgım bunu almadı yardımlarınızı bekliyorum nerde hata yapıyorum acaba :?: ...


IBSQLSORGU.SQL.Add('select * from KAYIT where (TARIH between :ilkgun and :songun)');
IBSQLSORGU.SQL.Add('order by KAYITNO ASC');
IBSQLSORGU.ParamByName('ilkgun').Value:=Datetostr(DateTimePicker1.date);
IBSQLSORGU.ParamByName('songun').Value:=datetostr(DateTimePicker2.date);
IBSQLSORGU.Open;
IBSQLSORGU.FetchAll;
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: iki tarih arası sorgulama

Mesaj gönderen Ertugrul »

@fatmet,
Date turunden alanlarda parametre degerini string olarak gondermemeye ozen gosterin.

Kod: Tümünü seç

IBSQLSORGU.Close;
IBSQLSORGU.SQL.Add('select * from KAYIT where (TARIH between :ilkgun and :songun)');
IBSQLSORGU.SQL.Add('order by KAYITNO ASC');
IBSQLSORGU.ParamByName('ilkgun').Value:=DateTimePicker1.date;
IBSQLSORGU.ParamByName('songun').Value:=DateTimePicker2.date; 
IBSQLSORGU.Open;
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Re: iki tarih arası sorgulama

Mesaj gönderen shadowmann »

chasteeer yazdı:http://tinypic.com/r/16jg0av/5
http://i43.tinypic.com/16jg0av.jpg

bu hata neyden kaynaklanıyor acaba lütfen yardım edin kafayı yiyeceğim :((
alan adını date diye yazmışsınız. Reserved keywordlerde sorun çıkıyor diye biliyorum. Tarih filan yapmalısınız
Her zaman bir vâmuk-i azra olur alem bu ya,
Nev-be-nev efsaneler peydâ olur alem bu ya,
Kabz u bast kıl tefekkür aleminde ey gönül,
Vakt-i sermânın sonu, vakt-i germân olur alem bu ya...
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: iki tarih arası sorgulama

Mesaj gönderen m_ekici »

ben şunu kullanıyorum

Kod: Tümünü seç

DAT0_.SQL.Add('AND GIRTARIH BETWEEN CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd 00:00',TAR1.DATE)+''', 102) AND CONVERT(DATETIME, '''+FormatDateTime('yyyy.mm.dd 23:59',TAR2.DATE)+''', 102)');
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: iki tarih arası sorgulama

Mesaj gönderen barutali »

Kod: Tümünü seç

procedure TFUNIT.TarihArasiBul(ALAN1,ALAN2: string);
 Var
 Sorgu : WideString;
 Kriter,Kriter1 : String;
begin
  Kriter   := FormatDateTime('DD/MM/YYYY', FSIPARISLISTESI.edTarih1.Date);
  Kriter1  := FormatDateTime('DD/MM/YYYY', FSIPARISLISTESI.edTarih2.Date);
  Sorgu  :=
          format
          (
          'SET DATEFORMAT DMY'+#13#10+
          'DECLARE'+#13#10+
          '@A SMALLDATETIME,'+#13#10+
          '@B SMALLDATETIME'+#13#10+
          'SELECT @A = %s 00:00:00'+#39+
          'SELECT @B = %s 00:00:00'+#39+
          'select * from'+#13#10+
          'TBLSIPARIS'+#13#10+
          'where'+#13#10+
          'TBLSIPARIS.%S >= @a'+#13#10+
          'and'+#13#10+
          'TBLSIPARIS.%S <= @b',
          [#39+Kriter,#39+Kriter1,ALAN1,ALAN2]
          );

  with DM.QSIPARIS do
  begin
    Close;
    SQL.Clear;
    SQL.Add(Sorgu);
    Open;
  end;
end;
İki tarih arası sorgulama yapmak için hazırladığım procedure üm .. alan1 ve alan2 veritabanındaki kolonları adı oluyor ...
amatör küme programcı :D
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: iki tarih arası sorgulama

Mesaj gönderen yusuf simsek »

Tarih formatını [Gün].[Ay].[Yıl] olarak değil de [Yıl].[Ay].[Gün] olarak gönderilmesi sorununuzu çözebilir.
( MS-SQL 2005 çalışıyor )
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Cevapla