Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Gün Hesaplama
#1
Arkadaşlar yardımlarının için şimdiden teşekkür ederim.

Sorum şu beni bir tablom var 

başlangıç.tarih         bitiş tarihi
01.05.2020            10.05.2020
25.04.2020            15.05.2020
15.05.2020            02.06.2020
25.04.2020            02.06.2020


5.ay gün
 
başlangıç.tarih         bitiş tarihi     gün
01.05.2020            10.05.2020     10
25.04.2020            15.05.2020     15 mayıstan=15 günü var nisandan 6 günü var ama nisanı dikkate almayacağız 1 mayıstan itibaren hesaplamamız gerekiyor
15.05.2020            02.06.2020     16 mayıstan=16 günü var hazirandan 2 gün ama haziranı dikkate almayacağız 15 mayız 31 mayıs arasını hesaplamamız gerekiyor
25.04.2020            02.05.2020      2 mayıtan=2 gün var nisandan 6 gün var ama nisanı dikkate almayacağız 1 mayıstan itibaren hesaplamamız gerekiyor
                              toplam         43
Ben bu tabloyu sum ederek 42 günün bulmak istiyorum bunu sql komutu ile nasıl yapabilirim.
Firebird 2.5 kullanıyorum.

Sadece 5.ay toplamını istiyorum.
Cevapla
#2
SELECT SUM(datediff(day, TARIHKUCUK, TARIHBUYUK))
FROM.....
WWW
Cevapla
#3
Ustalar yokmu soruma çozüm acaba?
Cevapla
#4
FireBird tarafında nasıl yapılır tam bilemem fakat MS SQL tarafındaki mantığı aşağıdaki bu yoldan firebirde belki uyarlıyabilirsin

Case When BasAy = BitAy then //Aynı ayın içindeki Fark
     BitTarih - BasTarih
  End
  else
  Case When BasAy = 5 then //Başlangıç tarihinden ayın son günü arasındaki fark
     DATEADD(dd, -1, DATEADD(mm, DATEDIFF(mm, 0, BasTarih) + 1, 0)) - BasTarih
  End
  else
  case When BitAy = 5 then // Bitiş Tarihinden ayın ilk günü arasındaki fark
     BitTarih - DATEADD(mm, DATEDIFF(mm, 0, BasTarih), 0)
  end;
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#5
(04-03-2020, Saat: 16:49)muratsenocak Adlı Kullanıcıdan Alıntı: Ustalar yokmu soruma çozüm acaba?

Gün hesabında dikkate alınması gereken kuralları açıkça belirtirseniz çözüm mutlaka gelecektir.
Cevapla
#6
Soru muğlak, tam ifade edilememiş, bu nedenle öncelikle şu yazıyı okuman gerekiyor;

https://www.delphican.com/showthread.php?tid=4403

Sonrasında;

Ardışık iki aylık periyotta ağırlıklı olarak ( ay başı ve ay sonuna göre ) hangi ayda daha fazla gün var ise onu bulmak istediğini zannediyorum. "Zannediyorum" çünkü 25.04.2020 - 02.05.2020 aralığında verdiğin tarif buna aykırıymış gibi gözüküyor. Doğru mu?

O nedenle önce problemin kendisini netleştirirsen soruyu sormak da çözmek de daha kolay hale gelir.

YouTube Delphi Tips

"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" P.Safa
WWW
Cevapla
#7
Soruyu tam okumadan cevap yazmışım sanırım kusura bakmayın, bu işlemi yapabilmek için bir stored procedure oluşturup içerisinde döngü ile yine yukarıda yazdığım kodu kullanıp kolayca çözebilirsiniz. Mantık olarak başlangıç tarihi seçilen ay ise o ayın farkını ardışık ayın 1. gununden çıkartıp sonrasında 1 eksilterek bulabilirsiniz, bitis tarihi seçilen aya denk gelirse de; seçili ayın 1. gununden kayıt tarihini çıkartarak bulup bunları toplatıp sonrasında çıktı alabilirsiniz.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Firebird CariBakiye Hesaplama Stored Procedure masteryoda 4 2.534 08-02-2017, Saat: 17:11
Son Yorum: masteryoda



Konuyu Okuyanlar: 1 Ziyaretçi