ナレッジベース

DATEDIFF を使って日付の差を計算すると予期しない結果が返される


発行: 12 May 2014
最終修正日: 07 Jan 2019

問題

DATEDIFF 関数を使用して 2 つの日付の差を計算すると、結果が正しくない場合があります。

環境

Tableau Desktop

解決策

次の計算を使用して、年を調整します。
IF DATEPART('month',[Sart Date]) < DATEPART('month', [End Date]) THEN [Age (years)]
ELSEIF
((DATEPART('month',[Sart Date])) > (DATEPART('month', [End Date])))
THEN ([Age (years)] -1)
ELSEIF
((DATEPART('day',[Sart Date]) <= DATEPART('day',[End Date]))) THEN [Age (years)]
ELSE ([Age (years)]-1)
END

原因

DATEDIFF 関数は、1 年に満たない期間ではなく完全な 1 年に基づいて計算しています。 例: 開始日が 2012 年 6 月、終了日が 2013 年 5 月です。上記の 2 つの日付の間の期間は完全な 1 年ではありません (11 か月しかない)。しかし、DATEDIFF を使用すると、DATEPART の year に対して差が 1 になります。
この記事で問題は解決しましたか?