2011-12-06 19 views
5

arasındaki tarihlerin yıl sayısı sql içinde iki tarih arasındaki tam yıl sayısını hesaplamanız gerekir. Ben 1/5/2011 ve 1 tam yıl olarak 30/4/2012 arasındaki süreyi dikkate böylece şekilde onu oynamak için gereken Ancak hesaplamak için şu anda kullanıyorum sorguHesaplayın Sql

--Date1 > Date2 
CASE 
WHEN YEAR(Date1) = YEAR(Date2) 
    THEN DATEDIFF(year, Date2, Date1) 
WHEN YEAR(Date1) > YEAR(Date2) 
     AND MONTH(Date1) >= MONTH(Date2) 
     AND DAY(Date1) >= DAY(Date2) 
    THEN DATEDIFF(year, Date2, Date1) 
ELSE 
    DATEDIFF(year, Date2, Date1) - 1 

olduğunu.

+0

kurtarmaya Apaçık Kaptan: 'YIL (Date1) = YIL (Date2)', daha sonra 0 tam yıl giderse - Çıkarmaya gerek yok. (1 Ocak-31 Aralık arası, bu durumda ya da çıkarmaya gerek yoktur.) – ANeves

cevap

4

bunu karşılaştırmak önce Date2 için bir gün ekleyin: hedefin ne basitçe 1 gün ekleme hakkında tam bir yıl olacak 1 yıllık daha az günde bir düşünün ise

dateadd(day, 1, Date2) 
+0

bazen en kolay yol en kolay yoldur: P –

+0

@Andomar, bunun için teşekkürler. Beynim bazen awol gider :) –

1

senin sonraki tarih? dateadd() yapmalı. Ben diğer hatalı hesaplamalar neden olur sanmıyorum

mysql> SELECT ADDDATE('2011-05-01', INTERVAL 1 DAY); 
     -> '2011-05-02' 

...

İlgili konular