日付に関する計算フィールドってよく使う割に書き方を忘れますよね。
初日ってどうするんだっけとか。
かといって暗記するほどでもないです。
なので、ここにまとめておきます。
目次
当月に関する計算フィールド
なぜかは知らないんですが、日付関数を使うとデフォで日時になるので、すべてにDATEをつけています。
特に意味はないです。
月初と月末
月初
//月初
DATE(DATETRUNC('month', [日付]))
月末
//月末
DATE(
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', [日付])
)
)
)
当月日数
//当月日数
DAY(
//月末
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', [日付])
)
)
)
月初から今日までの日数
//月初から今日までの日数
DAY(Today())
月末までの残り日数
//月初までの残り日数
DATEDIFF("day",TODAY(),
//月末
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', TODAY())
)
)
)
今月は月末までの残り日数で、先月以前は月日数、翌月以降は0
//今月判定
IF MONTH([日付]) = MONTH(TODAY())
THEN
//月初までの残り日数
DATEDIFF("day",TODAY(),
//月末
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', TODAY())
)
)
)
//当月前判定
ELSEIF MONTH([日付]) < MONTH(TODAY())
THEN
//当月日数
DAY(
//月末
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', [日付])
)
)
)
ELSE 0
END
初日の曜日
//初日の曜日
DATENAME("weekday",[月初])
初平日
月最初の平日。
DATE(
//月初が土日か平日か
IF DATEPART('weekday', [月初]) = 1 THEN
//1の場合は日曜日なので、翌日にする
DATEADD('day', 1, [月初])
ELSEIF DATEPART('weekday', [月初]) = 7 THEN
//7の場合は土曜日なので、翌々日にする
DATEADD('day', 2, [月初])
ELSE
[月初]
END
)
最終平日
DATE(
//月末が土日か平日か
IF DATEPART('weekday', [月末]) = 1 THEN
//1の場合は日曜日なので、一昨日にする
DATEADD('day', -2, [月末])
ELSEIF DATEPART('weekday', [月末]) = 7 THEN
//7の場合は土曜日なので、前日にする
DATEADD('day', -1, [月末])
ELSE
[月末]
END
)
当月の平日の数
//総平日日数
DATEDIFF('day',[初平日],[最終平日]) + 1
//初平日から最終平日までの日数。1日分ずれるので+1する
- 2 * DATEDIFF('week',[初平日],[最終平日])
//初平日から最終平日までの-1週数分かならず土日があるので×-2
隔週のx曜日
うちのプラごみの日です。(毎週火曜日)
//当火曜日
DATE(DATEADD("day",3-DATEPART("weekday",[日付]),[日付]))
//火曜日は3なので3との差を足す。
第n週のx曜日
うちの粗大ごみの日です。(第4水曜日)
//第4水曜日
IF DATEPART("weekday",[初日]) <= 4 THEN
DATE(
DATEADD("day",4-DATEPART("weekday",[初日])+21,[初日])
)
//第4なので3週分(21)追加です。
ELSE
DATE(
DATEADD("day",4-DATEPART("weekday",[初日])+28,[初日])
)
//初日が4以上、つまり木金土の場合はDATEADDが-になり前月の水曜になってしまうので4週分(28)ついか
END
先月に関する計算フィールド
先月初と先月末
先月初
//先月初
DATE(
DATEADD('month', -1,
DATETRUNC('month', [日付])
)
)
先月末
//先月末
DATE(
DATEADD('day', -1,
DATETRUNC('month', [日付])
)
)
先月の日数
//先月日数
DAY(
//先月末
DATEADD('day', -1,
DATETRUNC('month', [日付])
)
)
翌月に関する計算フィールド
翌月初と翌月末
翌月初
//翌月初
DATE(
DATEADD('month', 1,
DATETRUNC('month', [日付])
)
)
翌月末
//先月日数
DAY(
//翌月末
DATEADD('day', -1,
DATEADD('month', 2,
DATETRUNC('month', [日付])
)
)
)
翌月の日数
//先月日数
DAY(
DATEADD('day', -1,
DATETRUNC('month', [日付])
)
)
Comment