鷹尾祥(アキラ)のExcel BI ブログ

Excelの革新的機能であるパワーピボット/パワークエリ/DAXについて紹介します。

PowerQuery 日付型データ③ (Date関数)

今回は日付型データの関数のサンプル式と結果の一覧を用意しました。
また、それぞれの関数の特徴を元にカテゴライズしています。
適宜ご利用ください。

情報系

日付データから一部の情報を取り出します。

単位 基準日 サンプル式 結果
2019/1/10 Date.Day(#date(2019, 1, 10))  10
曜日(数字) 2019/1/10 Date.DayOfWeek(#date(2019, 1, 10))  4
曜日(文字) 2019/1/10 Date.DayOfWeekName(#date(2019, 1, 10))  木曜日
月を数字で 2019/1/10 Date.Month(#date(2019, 1, 10)) 1
月を文字で 2019/1/10 Date.MonthName(#date(2019, 1, 10)) 1月
年を数字で 2019/1/10 Date.Year(#date(2019, 1, 10)) 2019

変換系

その他のデータ型からDate型に変換します。

変換元 サンプル式 結果
数字から Date.From(43780) 2019/11/11
DateTime型から Date.From(#datetime(2019, 11, 10, 06, 45, 12)) 2019/11/11
Text型から Date.FromText("2019-11-10") 2019/11/10
Text型から Date.FromText("2019, 11, 10") 2019/11/10
Text型から(日省略) Date.FromText("2019, 11") 2019/11/1
Text型から(月日省略) Date.FromText("2019") 2019/1/1
Text型へ(指定なし) Date.ToText(#date(2019, 9, 7)) 2019/09/07
Text型へ(指定あり) Date.ToText(#date(2019, 9, 7), "yyyy-M-d") 2019-9-7
Record型へ Date.ToRecord(#date(2019, 11, 10)) Record


Text型への変換のフォーマット指定はISO8601規格
ISO 8601 - Wikipedia

計算系

基準日からXX日後、XX月後などに移動した日付を出力します。前はマイナス値をパラメーターに入れます。

単位 基準日 増分 サンプル式 結果
X日後 2019/1/10 1 Date.AddDays(#date(2019, 1, 10), 1)  2019/1/11
X週後 2019/1/10 1 Date.AddWeeks(#date(2019, 1, 10), 1)  2019/1/17
X月後 2019/1/10 1 Date.AddMonths(#date(2019, 1, 10), 1)  2019/2/10
X四半期後 2019/1/10 1 Date.AddQuarters(#date(2019, 1, 10), 1)  2019/4/10
X年後 2019/1/10 1 Date.AddYears(#date(2019, 1, 10), 1)  2020/1/10

数える系

基準日が何日目、何週目など。

単位 基準日 サンプル式 結果
年の何日目? 2019/2/10 Date.DayOfYear(#date(2019, 2, 10)) 41
年で何週目? 2019/9/10 Date.WeekOfYear(#date(2019, 9, 10)) 37
年の何四半期目? 2019/5/10 Date.QuarterOfYear(#date(2019, 5, 10)) 2
月で何週目? 2019/1/30 Date.WeekOfMonth(#date(2019, 1, 30)) 5
月は何日ある? 2019/1/10 Date.DaysInMonth(#date(2019, 1, 10)) 31

最初の日

単位 基準日 サンプル式 結果
日の始まりの
日付時刻
2019/1/10 10:30:45 Date.StartOfDay
(#datetime(2019, 1, 10, 10, 30, 45))
2019/1/10 0:00
週の最初の日 2019/8/21 Date.StartOfWeek(#date(2019, 8, 21)) 2019/8/18
月の最初の日 2019/8/21 Date.StartOfMonth(#date(2019, 8, 21)) 2019/8/1
四半期の最初の日 2019/8/21 Date.StartOfQuarter(#date(2019, 8, 21)) 2019/7/1
年の最初の日 2019/8/21 Date.StartOfYear(#date(2019, 8, 21)) 2019/1/1

最後の日

単位 基準日 サンプル式 結果
日の終わりの
日付時刻
(のはずが丸めて翌日に?)
2019/1/10 10:30:45 Date.EndOfDay
(#datetime(2019, 1, 10, 10, 30, 45))
2019/1/11 0:00
週の最後の日 2019/8/21 Date.EndOfWeek(#date(2019, 8, 21)) 2019/8/24
月の最後の日 2019/8/21 Date.EndOfMonth(#date(2019, 8, 21)) 2019/8/31
四半期の最後の日 2019/8/21 Date.EndOfQuarter(#date(2019, 8, 21)) 2019/9/30
年の最後の日 2019/8/21 Date.EndOfYear(#date(2019, 8, 21)) 2019/12/31

判定系

基準日に対して、true、falseを返します。以下、本日の日付を2019/11/17とした場合の動作です。

今日かどうかの判定。

単位 サンプル式 結果
今日? Date.IsInCurrentDay(#date(2019, 11, 17)) true
今週? Date.IsInCurrentWeek(#date(2019, 11, 17)) true
今月? Date.IsInCurrentMonth(#date(2019, 11, 17)) true
今四半期? Date.IsInCurrentQuarter(#date(2019, 11, 17)) true
今年? Date.IsInCurrentYear(#date(2019, 11, 17)) true

翌判定

単位 サンプル式 結果
翌日? Date.IsInNextDay(#date(2019, 11, 18)) true
翌週? Date.IsInNextWeek(#date(2019, 11, 24)) true
翌月? Date.IsInNextMonth(#date(2019, 12, 17)) true
翌四半期? Date.IsInNextQuarter(#date(2020, 1, 17)) true
翌年? Date.IsInNextYear(#date(2020, 11, 17)) true

翌X内判定

当日、当週、当月、当四半期、当年はfalseになり、それ以降X内がtrueになります。

単位 サンプル式 結果
翌X日内? Date.IsInNextNDays(#date(2019, 11, 18), 5) true
翌X週内? IsInNextNWeeks(#date(2019, 12, 1), 2)) true
翌X月内? Date.IsInNextNMonths(#date(2020, 1, 17), 2) true
翌X四半期内? Date.IsInNextNQuarters(#date(2020, 4, 17), 2) true
翌X年内? Date.IsInNextNYears(#date(2021, 12, 31), 2) true

前判定

単位 サンプル式 結果
前日? Date.IsInPreviousDay(#date(2019, 11, 16)) true
前週? Date.IsInPreviousWeek(#date(2019, 11, 10)) true
前月? Date.IsInPreviousMonth(#date(2019, 10, 17)) true
前四半期? Date.IsInPreviousQuarter(#date(2019, 9, 17)) true
前年? Date.IsInPreviousYear(#date(2018, 11, 17)) true

前X内判定

当日、当週、当月、当四半期、当年はfalseになり、それ以前X内がtrueになります。

単位 サンプル式 結果
前X日内? Date.IsInPreviousNDays(#date(2019, 11, 15), 5) true
前X週内? Date.IsInPreviousNWeeks(#date(2019, 11, 3), 2) true
前X月内? Date.IsInPreviousNMonths(#date(2019, 9, 17), 5) true
前X四半期内? Date.IsInPreviousNQuarters(#date(2019, 4, 17), 2) true
前X年内? Date.IsInPreviousNYears(#date(2017, 1, 1), 3) true

そのほか

単位 サンプル式 結果
うるう年? Date.IsLeapYear(#date(2020, 11, 17)) true

定数

単位 サンプル式 結果
日曜日 Day.Sunday 0
月曜日 Day.Monday 1
火曜日 Day.Tuesday 2
水曜日 Day.Wednesday 3
木曜日 Day.Thursday 4
金曜日 Day.Friday 5
土曜日 Day.Saturday 6

関連記事

Microsoft社のリファレンスです。
docs.microsoft.com


以下、ブログの関連記事です。

modernexcel7.hatenablog.com

modernexcel7.hatenablog.com