我希望在 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 个日期之间的值。
您可以使用
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