Baz alınan tarihlere göre select içinde gün sayısını hesabı

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Baz alınan tarihlere göre select içinde gün sayısını hesabı

Mesaj gönderen mahsuni »

Arkadaşlar
Öncelikle herkese iyi akşamlar.

Yapmak istediğim işi bir örnek ile açıklayayım.

(Veri tabanı FB 1.5 ve Bu kodları procedure içinde yazacağım)

Kod: Tümünü seç

Örnek:
Giriş Değerleri:

BazTarihi :25.02.2004
TesTarihi :06.04.2004 

Çıkış Değerleri:
Yil   Ay   GunSayisi  
2004   2      4             //(28.02.2004-25.02.2004=4 gün eder)
2004   3     31            //(31.03.2004-01.03.2004=31 gün eder)
2004   4      6            //(06.04.2004-01.04.2004=6 gün eder)

Cevaplar için şimdiden herkese teşekkür eder ve
çalışmalarınızda başarılar dilerim.
[/code]
onaydin

Mesaj gönderen onaydin »

Kod: Tümünü seç

declare variable TAR_1 date;
declare variable TAR_2 date;
begin
  TAR_1 = '25.02.2004';
  TAR_2 = '06.03.2004';

  GUN = cast( (TAR_2-TAR_1)  as INTEGER) ;
end
Sanırım GUN = GUN + 1 yapmak lazım.

--
ay değeri de
EXTRACT(MONTH FROM TAR_2)
şeklinde alınıyor
--
Bu adreste de bazı tarih fonksiyonları var;
http://www.volny.cz/iprenosil/interbase ... estamp.htm
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

ONAYDIN'ın söyeldiklerine ilaveten;
Proceduresine Gun değişkeninide integer olarak tanımlamanız gerekiyor.
FB'de date yerine timestamp kullanmalısın.(dialect1 veya dialect3 olma durumuna göre)

Not:Kodu denedim +1 yapmadan doğru çalışıyor.

Kolay gelsin
onaydin

Mesaj gönderen onaydin »

evet doğru çalışıyormuş fakat örnek yanlış verilmiş

2004 3 31 //(31.03.2004-01.03.2004=31 gün eder)

30 gün eder denmesi lazım.
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Mesaj gönderen mahsuni »

cevaplar için hepinize teşekkür ederim.

Ayrıca 17.06.2004-17.06.2004 matematiksel olarak (veya excelde) sıfır kalıyor. Bu nedenle +1 ekliyorum.
Cevapla