HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📌
hkob's Notion
/
ℹ️
逆引きFormula 2.0
/
💾
Database storage
/
📅
日付範囲内に含まれることを確認するには?
📅

日付範囲内に含まれることを確認するには?

Status
Update by 2.0
関数説明
📓
dateEnd
📓
hour
📓
minute
📓
+, add
📓
==, equal
📓
dateAdd
📓
>=
📓
dateStart
📓
&&, and
📓
<
📓
now
属性名
終了時刻・範囲内?
返り値
Boolean
関連するもの
ℹ️
逆引きFormula 2.0
に戻る
Slack で以下の質問を受けました。
「今日のタスク」というデータベースを作成したいのですが、、、難しい、、、、例えば、タスク1
開始日8/24〜終了日8/31と指定した場合、その期間中の今日(8/30)に掛かるものをフィルターかformulaで抽出するのは出来ますか?
時間を含まない場合、範囲でのチェックが難しいためです。時間を含まない場合には、終了時刻を翌日の0:00 にして、その時刻と比較することで範囲内かどうかをチェックできます。
  1. 終了時刻の取得を確認します。時間が設定されていない時(0:00の時)に終了時刻の翌日の0:00 にします。0:00かどうかの判定ですが、時間と分の和が0になるのは0:00しかないので、比較は一つだけで済んでいます。
    1. /* 日付範囲プロパティの終了時刻を変数 et に代入 */ let(et, prop("日付範囲").dateEnd(), /* et が 0:00 の時には翌日の 0:00 に設定 */ et.hour() + et.minute() == 0 ? et.dateAdd(1, "days") : et )
      →
      📓
      dateEnd
      📓
      hour
      📓
      minute
      📓
      +, add
      📓
      ==, equal
      📓
      dateAdd
  1. 範囲内?(動作確認版): now() を使うとテストできないので、動作確認用にチェック日付で書いたものです。上の終了時刻より前かどうかをチェックしています。
    1. /* チェック日付を cd に代入 */ let(cd, prop("チェック日付(now()に変える)"), /* 日付範囲の開始時刻から事前準備した終了時刻の間に入っているかを確認 */ (cd >= prop("日付範囲").dateStart()) and (cd < prop("終了時刻")) )
      →
      📓
      >=
      📓
      dateStart
      📓
      &&, and
      📓
      <
  1. 範囲内?: 実際に使うものはこちらです。
    1. lets( /* 日付範囲プロパティの開始時刻を変数 st に代入 */ st, prop("日付範囲").dateStart(), /* 日付範囲プロパティの開始時刻を変数 st に代入 */ et, prop("日付範囲").dateEnd(), /* 終了時刻の調整(日付のみの場合に一日後に変更) */ ret, et.hour() + et.minute() == 0 ? et.dateAdd(1, "days") : et, /* 日付範囲の開始時刻から事前準備した終了時刻の間に入っているかを確認 */ (now() >= st) and (now() < et) )
      →
      📓
      dateStart
      📓
      dateEnd
      📓
      hour
      📓
      minute
      📓
      +, add
      📓
      ==, equal
      📓
      dateAdd
      📓
      now
      📓
      >=
      📓
      &&, and
      📓
      <
日付範囲確認
Name
日付範囲
チェック日付(now()に変える)
終了時刻
範囲内?(動作確認版)
範囲内?
時間なし・終了日なし
Aug 30, 2022
Aug 30, 2022 08:00
時間なし・終了日
Aug 29, 2022 → Aug 30, 2022
Aug 30, 2022 08:00
時間なし・開始日
Aug 30, 2022 → Aug 31, 2022
Aug 30, 2022 08:00
時間なし・中間
Aug 29, 2022 → Aug 31, 2022
Aug 30, 2022 08:00
時間なし・開始日以前
Aug 28, 2022 → Aug 29, 2022
Aug 30, 2022 08:00
時間なし・終了日以降
Aug 31, 2022 → Sep 1, 2022
Aug 30, 2022 08:00
時間あり・終了時刻なし
Aug 30, 2022 01:00
Aug 30, 2022 08:00
時間あり・終了時刻ちょうど
‣
Aug 30, 2022 08:00
時間あり・中間
‣
Aug 30, 2022 08:00
時間あり・開始時刻ちょうど
‣
Aug 30, 2022 08:00
時間あり・開始時刻前
‣
Aug 30, 2022 08:00
時間あり・終了時刻後
‣
Aug 30, 2022 08:00