かっこいい期間検索

  • URLをコピーしました!

こんにちはジョージです。某水族館でこれでもかというほどシャチに水をかけられたのは、夏の旅行のよい思い出です!

目次

開始日と終了日をもったレコードの一般的な期間検索

さて旅行といえば、カスタム App でイベント管理をされている方も多くいらっしゃると思いますが「開始日フィールド」と「終了日フィールド」をもった「期間」としてイベントを管理しなければいけないケースも多くあると思います。

このようなイベント管理をカスタム App に採用した場合、特定の期間に発生するイベントを検索するには、通常以下のような検索を行うと思います。

例:2023/08/04 から 2023/08/14 までに行われるイベントを検索する

こんなレコードがあって…

こんな条件を入力すると…

該当結果はこうなります。

3 件のレコードが該当しました!

一般的な期間検索についての考察

さて、ここで「一般的な期間検索」についてよく考えてみましょう。少なくとも私はこんな事を思いました。

  • 開始日に「終了日条件以下」を入力、終了日に「開始日条件以上」を入力が、なんとなくイヤ。
  • 単独の日付の検索でも開始日、終了日に検索条件を指定しなければいけない。
  • 日本語と同じように「開始日…終了日」で検索したい。

いずれも、こういうものだと納得すればよいだけなのですが、こちらはじぇねんちゅの自由研究コーナーですので無理やりなんとかしてみましょう。

日付リストの作成

そこで、こんなテキストフィールド「対象日」フィールドを作ってみました。計算値の自動入力で以下の計算式「日付のリスト」が入力されます。

While ([
~s = GetAsDate(開始日);
~e = GetAsDate(終了日);
~next = ~s;
~list = ""
];
~next ≤ ~e;
[
~list = List ( ~list; ~next );
~next = ~next + 1
];
~list
)

それでは早速検証してみましょう!

単独の日付で検証

まずは単独の日付「2023/08/09」を検索してみます。

うまく検索できました!

期間で検索

次は期間「2023/08/09…2023/08/15」で検索してみましょう。

こちらもうまく検索できました!

まとめ

正攻法で検索する方法、日付リストを作成してから検索する方法の 2 種類を紹介してみましたがいかがでしたでしょうか?どちらの方法でも一応動作するようです。この演算子「…」はなかなか万能でおもしろいですね。他にもおもしろい検索があれば是非教えてください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次