2011-12-06 34 views
5

年の数をsqlの2つの日付の間に計算する必要があります。私はそれが1完全な年として2011年1月5日と30/4/2012までの時間を考慮するように何とかそれを微調整する必要があるしかし、私は計算に現在使用しているクエリは計算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 

です。

+0

救助への明白なキャプテン: 'YEAR(日付1)= YEAR(日付2)は'、その後、0完全な年がいった場合には〜によって減算する必要はありません。 (1月1日から12月31日までは、どちらの場合も除算する必要はありません) – ANeves

答えて

4

あなたはそれを比較する前にDate2に1日追加:

dateadd(day, 1, Date2) 
+0

最も簡単な方法が最も簡単な方法です:P –

+0

@Andomar、ありがとう。私の脳は時々AWOLに行く:) –

1

目標は通期であることを1年あまり日を検討している場合は、およそ単にあなたの1日を追加するもの後日? dateadd()はそれを行うべきです。私はが他の誤った計算を引き起こすとは思わない

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

...

関連する問題