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
WEEKS_US [TDV でのみ使用する人為的な日付部分。以下の例 1 を参照]
DAYS
DAY
DD
D
HOURS
HOUR
HH
MINUTES
MINUTE
MI
M
SECONDS
SECOND
SS
S
MILLISECONDS
MILLISECOND
MS
他の 2 つの引数 (startdate と enddate) は時系カラムの値です。
デフォルトでは、TDV は ISO 標準に従って DATEDIFF を計算します (月曜日を週の最初の曜日として使用します)。ロケール対応のデータベース (Sybase など) は、実装するように構成されているローカル標準 (たとえば、米国標準 (日曜日を週の最初の日として使用) ) に従って計算します。この実装の違いにより、データ ソースで計算された週数が TDV で計算された週数と異なる場合があります。
WEEKS_US は、TDV が ISO 標準ではなく米国標準に従って 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 日までの月は無視されます。