📅

日付の間隔を○年○ヶ月○日と表示するには?

属性名
○年○ヶ月○日
返り値
String
逆引きNotionDB
関連するもの
以下のような質問がありました。
年は式がありますし、月は12の剰余を取ればいいので簡単でしたが、最後の日付をどうやったら取得できるかを考えていました。取得した年と月をずらしてあげればよいのではと気づき、以下のような形で実装できました。要望通りのものが作れているのではないかと思います。
 
  1. ○年を取得 (end が過去の場合にはマイナス)
    1. dateBetween(prop("End"), prop("Start"), "years")
  1. ○ヶ月を取得 (end が過去の場合にはマイナス)
    1. dateBetween(prop("End"), prop("Start"), "months") % 12
  1. 1, 2 のオフセットをずらした日付を取得
    1. dateAdd(dateAdd(prop("Start"), prop("year"), "years"), prop("month"), "months")
  1. オフセットをずらした日付と比較することで○日を取得 (end が過去の場合にはマイナス)
    1. dateBetween(prop("End"), prop("year_month_add"), "days")
  1. ○年○ヶ月○日の文字列を作成 (前後関係でマイナスを調整)
    1. (prop("Start") < prop("End")) ? (((prop("year") != 0) ? (format(prop("year")) + "年") : "") + ((prop("month") != 0) ? (format(prop("month")) + "ヶ月") : "") + format(prop("date")) + "日") : (((prop("year") != 0) ? (format(-prop("year")) + "年") : "") + ((prop("month") != 0) ? (format(-prop("month")) + "ヶ月") : "") + format(-prop("date")) + "日")
      日付間隔テスト
      Name
      Start
      End
      ○年○ヶ月○日
      year
      month
      year_month_add
      date
      Aug 20, 2022
      Aug 21, 2022
      NaN
      Aug 20, 2022 12:00 AM
      Jul 31, 2022
      Aug 1, 2022
      NaN
      Jul 31, 2022 12:00 AM
      Jul 31, 2022
      Aug 31, 2022
      NaN
      Jul 31, 2022 12:00 AM
      Jun 30, 2022
      Jul 30, 2022
      NaN
      Jun 30, 2022 12:00 AM
      May 31, 2022
      Jun 30, 2022
      NaN
      May 31, 2022 12:00 AM
      Jan 31, 2022
      Feb 28, 2022
      NaN
      Jan 31, 2022 12:00 AM
      Jan 31, 2021
      Mar 1, 2022
      NaN
      Jan 31, 2021 12:00 AM
      Mar 1, 2022
      Jan 31, 2021
      NaN
      Mar 1, 2022 12:00 AM