【Bubble開発】Date型で <= を使いたいときに有効な対処方法

こんにちは!
EPICs株式会社です。
Bubbleの「:filtered」オペレーションで条件を指定する際、date型のフィールドに対して「<=(以下)」の演算子が使用できず、「<」や「>」しか表示されないケースがあります。
この制限により、本来実装したいロジックが構築できず、意図しないフィルタ結果になってしまうこともあります。
実際に弊社の開発でも上記の問題にあたり、開発が行き詰った場面がありました。
この記事では、このBubbleの仕様的な制限に対して、有効な対処方法を紹介します。
実装手順
- 比較対象のdate型を、text形式(yyyyMMdd)に変換
- text → number に変換し、数値同士で比較可能にする
- :filteredの条件で <= を選べるようにする
- 表示には元のdate型を使用して、ユーザーには自然な形で見せる
実装方法
1. date → text → number に変換
Bubbleではフィルター条件内で指定できる演算子が、対象のデータ型によって異なります。
たとえば、number型には「<=」が表示される一方、date型では「<」や「>」しか表示されないことがあります。
この制限を回避するためには、以下のように型変換を行いましょう。
- Step1:dateを text に変換(formatted as yyyyMMdd)
- Step2:textを number に変換(converted to number)
このように数値型に変換すれば、<=を含めた全ての比較演算子が使用可能になります。
2. 変換処理の具体例
たとえば、以下のように RepeatingGroup のデータソースで、条件付きで日付リストをフィルターする場面を考えます。
データソース設定例
SplitDateRanges B’s Date List:filtered
List filter のConstraint例
This date + days: 6
→ :rounded down to day
→ :formatted as yyyyMMdd
→ :converted to number
<=
SplitDateRanges A’s Date List:last item
→ :formatted as yyyyMMdd
→ :converted to number
- 左:Repeating Group のデータソース
- 右:List filter の Constraint 内容
このように日付を数値に変換することで、「<=」が使えるようになります。
3. filteredの中で 「<=」 を使用可能に
数値化された2つのdate値(例:20250415)がフィルタの対象になることで、「<=」のような本来表示されない演算子が利用可能になります。
この方法は、以下のような日付範囲でのフィルター処理に非常に有効です。
- 「○月○日までのデータ」
- 「過去7日以内の記録」
- 「ある日付以前のイベント」
4. 表示には元のdateを使えばOK
データとしては日付を数値に変換して比較していますが、表示には元のdate型をそのまま使えば問題ありません。
Bubbleの RepeatingGroup などで表示する際は、元のデータを使うことで、違和感のない表示が可能です。
補足:他にも同様の制限がある場面
Bubbleでは以下のような場面でも、UI上の制限で想定どおりの演算子が使えないことがあります。
- :filtered内の比較演算子が限定される(特にdate型)
- リストの中での「includes(含む)」ができないケース
- advancedフィルターが必要になる複雑なロジック
このような時にも、「一時的な型変換」や「formattingの工夫」で回避できることがあります。
-
facebookで
シェアする -
Xで
シェアする -
LINEで
送る -
URLをコピーしました!