You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle查询转Solr查询求助:基于当前日期的区间查询

将Oracle日期区间查询转换为Solr查询

核心逻辑对应

原Oracle查询中SYSDATE() BETWEEN START_DATE AND END_DATE的逻辑,在Solr中可拆解为两个条件的组合:

  • START_DATE 小于等于当前时间
  • END_DATE 大于等于当前时间

Solr内置NOW关键字表示服务器当前时间,结合区间查询语法即可实现该逻辑,同时保留ACTIVE_FLAG='Y'的过滤条件。

代码实现

直接在你的查询构建代码中追加日期区间条件:

SolrQuery solrQuery = new SolrQuery();
StringBuilder q = new StringBuilder();

// 基础过滤条件:ACTIVE_FLAG为Y
q.append("ACTIVE_FLAG:Y");

// 追加日期区间条件:当前时间处于START_DATE和END_DATE之间
q.append(" AND START_DATE:[* TO NOW]");
q.append(" AND END_DATE:[NOW TO *]");

// 将拼接好的查询条件设置到SolrQuery
solrQuery.setQuery(q.toString());

关键注意点

  • 必须确保Solr集合里的START_DATE和END_DATE字段类型为date(在schema配置中定义为<field name="START_DATE" type="date" .../>),否则无法使用NOW关键字和区间查询语法。
  • 如果需要使用客户端本地时间而非Solr服务器时间,需手动将本地日期格式化为Solr支持的格式(如yyyy-MM-dd'T'HH:mm:ss.SSS'Z'),再替换代码中的NOW。

内容的提问来源于stack exchange,提问作者World of Titans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:07:01