MariaDB - 数组中的任何 JSON 值都在 2 个日期之间

问题描述 投票:0回答:1

我希望在 WHERE 中搜索 JSON 数组,以查找 2 个日期之间匹配的任何日期。

我可以使用下面的内容来匹配第一个匹配值。但是我想知道是否有任何值在两个日期之间 - 最好在单个查询中

SELECT *
FROM company_customers
WHERE ( JSON_VALUE( data, '$.call_dates.*.next') BETWEEN '2024/06/10' AND '2024/06/20' )

示例数据:

{
 "call_dates":{
    "97":{
      "next":"2024/06/27"
    },
    "2":{
      "next":"2024/06/14"
    }
  }
}

我想知道上述 JSON 中特定路径上的任何日期是否在 2 个给定日期之间。

我已经研究过 JSON_SEARCH 但似乎没有办法搜索 2 个日期之间的值。

mariadb
1个回答
0
投票

您可以使用

JSON_TABLE
为此:

select distinct c.*
from company_customers c
  join JSON_TABLE(c.data, '$.call_dates.*.next' COLUMNS(d date PATH '$')) as q 
where d between '2024-06-10' AND '2024-06-20';

参见dbfiddle

© www.soinside.com 2019 - 2024. All rights reserved.