本記事は、Alteryx社のAlteryx DesignerにまつわるTipsを毎週お届けするブログシリーズです。
今回でようやく80回を迎えます。
前月末を求める
ところで、日付の計算って結構めんどくさいと思いますが、みなさんはいかがでしょうか?日付は基本的に日時型(日付型)にすることで様々な便利な関数を使うことができます。
ある月の末日があったとして、前月末を求めるにはどうするでしょうか?例えば、2025年1月31日を考えてみましょう。一ヶ月前なので、以下のような計算を思いつくでしょうか?
DateTimeAdd('2025-01-31',-1,"Month")
実際にこれを計算してみましょう。


ちゃんと一ヶ月前の月末の日になっています。
しかし、1年を通してみてみましょう。

いくつかの月でおかしくなっています。2月は1月29日になっていて、月末の31日になっていませんし、4月、6月、9月、11月は前月が31日まであるのに30日になってしまっています。つまりこれ(DateTimeAdd(日付, -1, “Month”))は、月の部分に対しての加減しかしておらず、月末日は月によって変わるのでそのまま足し算、引き算をすると正しい結果にならない、ということです。
これを回避するにはいくつかの方法があります。
- DateTimeTrimで月でトリムして月初にし、1日引き算をする
- 1ヶ月引き算をして、DateTimeTrim関数の”lastofmonth”を使う
いずれも関数一つでできませんが、併用することで実現できます。
DateTimeTrimで月でトリムして月初にし、1日引き算をする
関数としては、以下のようになります(インプットを[Date]とします)。
DateTimeAdd(DateTimeTrim([Date],"Month"),-1,"Day")
もともとインプットが月初しかなければ、DateTimeTrimをせずとも、1日に引き算をしたらオッケーです。
1ヶ月引き算をして、DateTimeTrim関数の”lastofmonth”を使う
関数としては、以下のようになります(インプットを[Date]とします)。
DateTimeTrim(DateTimeAdd([Date],-1,"Month"),"lastofmonth")
これらにより、以下のように前月月末が計算できます。

まとめ
- 前月月末を計算する方法をご紹介しました
- DateTimeTrim、DateTimeAddを組み合わせることで実現可能です
サンプルワークフローダウンロード
次回
日時操作関連のTipsの予定です。
コメント