リファレンスガイド> SQL関数のTDVサポート> 日付関数> DATEDIFF
 
DATEDIFF
DATEDIFF関数は、指定された2つの日付、時刻、またはタイムスタンプの間の日付部分(日、週など)の数を計算します。
注:TDVは、サポートされているデータソースが使用する2つのパラメーター形式をサポートしています。 startdateとenddateの順序が2つの形式で入れ替わっていることに注意してください。
構文
DATEDIFF (datepart, startdate, enddate)
DATEDIFF (enddate, startdate)
備考
最初の引数は、差を示す整数(1(日)、4(年)など)を返す日付部分を指定します。
TDVは、次のdatepartキーワードをサポートしています。
YEARS
YEAR
YYYY
YY
QUARTERS
QUARTER
QQ
Q
MONTHS
MONTH
MM
M
WEEKS
WEEK
WW
WK
WEEKS_US [an artificial date part for use in TDV only; see example 1 below]
DAYS
DAY
DD
D
HOURS
HOUR
HH
 
MINUTES
MINUTE
MI
M
SECONDS
SECOND
SS
S
MILLISECONDS
MILLISECOND
MS
 
他の2つの引数(開始日と終了日)は時系列の値です。
TDVは、デフォルトでISO標準に従ってDATEDIFFを計算します(月曜日を週の最初の曜日として使用)。ロケール対応のデータベース(Sybaseなど)は、実装するように構成されているローカル標準(たとえば、米国標準(週の最初の日として日曜日を使用))に従って計算します。実装におけるこの差異により、データソースで計算された週数がTDVで計算された週数と異なる可能性があります。
WEEKS_USは、人工的な日付部分であり、ISO標準ではなく米国標準に従ってTDVにDATEDIFFを計算させます。 WEEKS_USはデータソースで拒否されるため、データソースにプッシュしないでください。
Sybaseは、年、月、日の日付部分に対して正しい(標準)結果を生成し、時、分、秒の日付部分に対して誤った結果を生成します。 TDVは、6つすべてに対して正しい結果を生成します。
例1
金曜日と次の日曜日の週の差を計算します。
DATEDIFF ('WEEK', DATE '2014-04-25', DATE '2014-04-27')
 
米国の基準によると、週は日曜日から始まります。したがって、2つの日付は異なる週に属しているため(日曜日は新しい週が始まります)、ロケール対応データベースは1を生成します。
ISO規格によると、週は月曜日から始まります。したがって、金曜日と日曜日は同じ週(前の月曜日から開始)に属しているため、TDVは結果0を生成します。
人工日付部分WEEKS_USを使用すると、TDVは結果1を生成します。
DATEDIFF (‘WEEKS_US’, DATE ‘2014-04-25’, DATE ‘2014-04-27’)
例2
2009年8月15日と2012年12月31日の年の差を計算します。
DATEDIFF (year, date '2009-08-15', date '2012-12-31')
 
TDVは、次のように年間隔をカウントして3を返します。
[1] 2010年1月1日+ [2] 2011年1月1日+ [3] 2012年1月1日= 3
指定された日付部分はYEARであり、各年の開始のみがカウントされるため、2012年1月1日から2012年12月31日までの月は無視されます。