2016-03-29 40 views
0

içinde günler arasında aynı tarihin kaç gün olduğunu hesaplamanın en kolay yolu Örnek vermek gerekirse, başlangıç ​​tarihi '2016-01-01' ve bitiş tarihi '2016-06-01', gün sayısı '10'uncu', her ay Ocak'tan Mayıs'a kadar göründüğü gibi 5'tir. Bir sıçrama yılı olduğu için '29'un' gün sayısı da 5'tir. '30'uncu gün sayısı 4'dür ve' 31'inci 'gün sayısı yalnızca belirli aylarda göründüğü 3'tür.Postgresql

Başlangıç ​​ve bitiş tarihleri ​​verilen bu sayıyı hesaplamanın en kolay (veya en zarif) yolu nedir?

cevap

0

Sen generate_series() kullanarak tarihlerin bir listesini oluşturmak ve sonra her gün olaylar sayabilirsiniz:

select extract(day from dt) as day_in_month, count(*) 
from generate_series(date '2016-01-01', date '2016-06-01', interval '1' day) as g(dt) 
group by extract(day from dt) 
order by 1; 
+0

Serin, en azından çalışıyor. Üzgünüz henüz sizin için oy kullanamaz. –