Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

DateDiff

2 つの日付の間隔を表す数を返します。

Synopsis

DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])

引数

interval date1date2 の差分計算に使用する間隔を指定する文字列式コード。引用符で囲んだ文字列で指定します。interval コードのリストは、以下を参照してください。
date1, date2 2 つの日付式。計算に使用する 2 つの日付を指定します。これらの日付の式にはオプションで時刻コンポーネントを含めることもできます。時刻を含めない場合、既定の 00:00:00 が使用されます。
firstdayofweek オプション — 週の最初の日を指定する定数。これを指定しない場合、日曜日が最初の日となります。使用可能な定数のリストは、以下を参照してください。
firstweekofyear オプション — 年度の最初の週を指定する定数。これを指定しない場合は、最初の週は 1 月 1 日を含む週になります。使用可能な定数のリストは、以下を参照してください。

概要

DateDiff 関数を使用して、2 つの日付の間にある指定された時間間隔の数を決定します。例えば、2 つの日付の間の日数や、今日から年末までの週の数などを計算できます。DateDiff は、date1date2 よりも前の場合、間隔を正の整数値で返します。後の場合、間隔を負の整数値で返します。2 つの日付が同一の場合、または時間の差が指定の間隔よりも短い場合、DateDiff は 0 (ゼロ) を返します。

間隔は、interval で指定した単位について計算されます。したがって間隔が 1 年間あるかどうかは、経過日数によってではなく、2 つの年が異なるかどうかによって判断されます。同様に、間隔が 1 日あるかどうかは、経過時間数によってではなく、2 つの日付が異なるかどうかによって判断されます。

引数 interval の値は以下のとおりです。

設定 説明
yyyy
q 四半期
m
y 年間通算日
d
w 週日 (曜日を 1 ~ 7 で表記)
ww 週 (週数)
h 時刻
n
s

date1date2 の間の日数を計算するには、日 ("d")、または年間通算日 ("y") を使用します。

date1date2 の間の週数を計算するには、曜日 ("w") と週数 ("ww")を使用します。interval が曜日 ("w") に指定されている場合、DateDiff は 2 つの日付の間の週の数を返します。date1 が月曜日である場合、DateDiffdate2 までの月曜日の数を計算します。この計算には date2 は含まれますが、date1 は含まれません。一方、interval が週数 ("ww") の場合、DateDiff 関数は 2 つの日付の間の暦週の数を返します。これは、date1date2 の間の日曜日の数を計算します。date2 が日曜日であれば、DateDiff は date2 を計算に入れますが、date1 はたとえ日曜日であっても計算に加えません。

引数 firstdayofweek は、interval 記号に "w" か "ww" を使用している計算に影響を与えます。引数 firstdayofweek の値は以下のとおりです。

定数 説明
vbUseSystem 0 各国言語サポート (NLS) の API 設定を使用します
vbSunday 1 Sunday (日曜日)
vbMonday 2 Monday (月曜日)
vbTuesday 3 Tuesday (火曜日)
vbWednesday 4 Wednesday (水曜日)
vbThursday 5 Thursday (木曜日)
vbFriday 6 Friday (金曜日)
vbSaturday 7 Saturday (土曜日)

引数 firstweekofyear の値は以下のとおりです。

定数 説明
vbUseSystem 0 各国言語サポート (NLS) の API 設定を使用します
vbFirstJan1 1 1 月 1 日を含む週を、第 1 週に指定します (既定)
bFirstFourDays 2 新年度に少なくとも週の 4 日が含まれる最初の週を、第 1 週に指定します
vbFirstFullWeek 3 新年度に週の全部の日が含まれる最初の週を、第 1 週に指定します

年 ("yyyy") の間隔を計算する場合、経過日数ではなく、暦年に基づいて計算されます。したがって、12 月 31 日とその翌年の 1 月 1 日を比較する場合、DateDiff の 年 ("yyyy") は、1 日しか経過していなくても 1 を返します。

date1 あるいは date2 に日付リテラルを指定した場合、指定した年がその日付の固定部分となります。しかし、date1date2 を引用符 ("") で囲み、年を省略した場合、date1date2 の式が評価されるたびに現在の年がコードに挿入されます。これにより、違う年にも利用できるコードを記述することができます。

以下の例は、DateDiff 関数を使用して今日から任意の日までの日数を表示します。

DiffADate =  DateDiff("d","11/12/1953",Date)
Print "Days to the present day: "
Println DiffADate

以下の例は、1953 年 11 月 12 日から 2005 年 11 月 1 日までの日付の各間隔単位を計算します。

NewDay = DateDiff("d","11/12/1953","11/1/2005")
NewWeek = DateDiff("w","11/12/1953","11/1/2005")
NewMonth = DateDiff("m","11/12/1953","11/1/2005")
NewQuarter = DateDiff("q","11/12/1953","11/1/2005")
NewYDay = DateDiff("y","11/12/1953","11/1/2005")
NewYear = DateDiff("yyyy","11/12/1953","11/1/2005")
Println NewDay
Println NewWeek
Println NewMonth
Println NewQuarter
Println NewYDay
Println NewYear

以下の例は、うるう年 (2004 年) とうるう年でない年 (2005 年) の 1 月 1 日から 3 月 1日までの日数を計算します。

LeapDays = DateDiff("d","1/1/2004","3/1/2004")
NLeapDays = DateDiff("d","1/1/2005","3/1/2005")
Println LeapDays
Println NLeapDays

当然、うるう年の差異は 60 日でうるう年でない年の差異は 59 日です。

以下の例は、2 つの連続する日付の時間間隔数を計算します。時間が指定されていない場合、既定の 00:00:00 になります。

NumH = DateDiff("h","1/1/2004","1/2/2004")
NumHNoon = DateDiff("h","1/1/2004","1/2/2004 12:00:00")
NumMin = DateDiff("n","1/1/2004","1/2/2004")
NumMinNoon = DateDiff("n","1/1/2004","1/2/2004 12:00:00")
NumSec = DateDiff("s","1/1/2004","1/2/2004")
NumSecNoon = DateDiff("s","1/1/2004","1/2/2004 12:00:00")
Println NumH
Println NumHNoon
Println NumMin
Println NumMinNoon
Println NumSec
Println NumSecNoon

関連項目

FeedbackOpens in a new tab