DateDiff
Synopsis
DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])
引数
interval | date1 と date2 の差分計算に使用する間隔を指定する文字列式コード。引用符で囲んだ文字列で指定します。interval コードのリストは、以下を参照してください。 |
date1, date2 | 2 つの日付式。計算に使用する 2 つの日付を指定します。これらの日付の式にはオプションで時刻コンポーネントを含めることもできます。時刻を含めない場合、既定の 00:00:00 が使用されます。 |
firstdayofweek | オプション — 週の最初の日を指定する定数。これを指定しない場合、日曜日が最初の日となります。使用可能な定数のリストは、以下を参照してください。 |
firstweekofyear | オプション — 年度の最初の週を指定する定数。これを指定しない場合は、最初の週は 1 月 1 日を含む週になります。使用可能な定数のリストは、以下を参照してください。 |
概要
DateDiff 関数を使用して、2 つの日付の間にある指定された時間間隔の数を決定します。例えば、2 つの日付の間の日数や、今日から年末までの週の数などを計算できます。DateDiff は、date1 が date2 よりも前の場合、間隔を正の整数値で返します。後の場合、間隔を負の整数値で返します。2 つの日付が同一の場合、または時間の差が指定の間隔よりも短い場合、DateDiff は 0 (ゼロ) を返します。
間隔は、interval で指定した単位について計算されます。したがって間隔が 1 年間あるかどうかは、経過日数によってではなく、2 つの年が異なるかどうかによって判断されます。同様に、間隔が 1 日あるかどうかは、経過時間数によってではなく、2 つの日付が異なるかどうかによって判断されます。
引数 interval の値は以下のとおりです。
設定 | 説明 |
---|---|
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 週日 (曜日を 1 ~ 7 で表記) |
ww | 週 (週数) |
h | 時刻 |
n | 分 |
s | 秒 |
date1 と date2 の間の日数を計算するには、日 ("d")、または年間通算日 ("y") を使用します。
date1 と date2 の間の週数を計算するには、曜日 ("w") と週数 ("ww")を使用します。interval が曜日 ("w") に指定されている場合、DateDiff は 2 つの日付の間の週の数を返します。date1 が月曜日である場合、DateDiff は date2 までの月曜日の数を計算します。この計算には date2 は含まれますが、date1 は含まれません。一方、interval が週数 ("ww") の場合、DateDiff 関数は 2 つの日付の間の暦週の数を返します。これは、date1 と date2 の間の日曜日の数を計算します。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 に日付リテラルを指定した場合、指定した年がその日付の固定部分となります。しかし、date1 や date2 を引用符 ("") で囲み、年を省略した場合、date1 や date2 の式が評価されるたびに現在の年がコードに挿入されます。これにより、違う年にも利用できるコードを記述することができます。
例
以下の例は、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