如何仅从solr中的日期提取年份?

如何仅从solr中的日期提取年份?,solr,Solr,如何仅从solr中的日期提取年份? 从solr查询日期时,我得到的是年-月-日期-小时-分-秒。如何从solr查询中仅获取年份 提前谢谢我相信你做不到。Solr只能处理日期范围,就像它只处理数字范围或字符串范围一样。要求Solr仅根据月份的第一天查询日期字段,就像要求Solr查询数字字段并只给出奇数,或者只查询以元音开头的字符串 您需要做的是将日期分解为月和日组件,然后查询这些组件。如果基本字段是sale_date,则还需要sale_月和sale_日。然后,您可以查询month:3以获取任何三月

如何仅从solr中的日期提取年份? 从solr查询日期时,我得到的是年-月-日期-小时-分-秒。如何从solr查询中仅获取年份


提前谢谢

我相信你做不到。Solr只能处理日期范围,就像它只处理数字范围或字符串范围一样。要求Solr仅根据月份的第一天查询日期字段,就像要求Solr查询数字字段并只给出奇数,或者只查询以元音开头的字符串

您需要做的是将日期分解为月和日组件,然后查询这些组件。如果基本字段是sale_date,则还需要sale_月和sale_日。然后,您可以查询month:3以获取任何三月发生的所有信息,或者查询day:1并获取任何月份或月份的第一天的所有信息:3和day:1以获取任何三月一日发生的所有信息


您可以在几年内执行类似操作,中断日期,在几年内创建一个新字段,并在其上进行查询。

我们在solr中没有任何内置函数。但是,您可以通过solr中的一些数学计算来实现这一目标

year = floor(sum(div(ms(created_at), mul(1000, 60, 60, 24, 365)), 1970))
用于计算本课程中的小时数

假设您有一个日期-2018-05-17 10:00:00(d1),要提取小时数,我们可以执行以下操作

  • 获取日期时间戳。(d1)
  • 在一天开始时获取该天的时间戳,即2018-05-17 00:00:00。(d2)
  • 现在减去这两个,即(d1-d2)。这将给出当天经过的小时数
  • 现在除以1000*60*60得到当前小时数。你可以四舍五入得到准确的结果
  • 示例-

    1. start_time_of_created_at = mul(floor(div(ms(created_at), mul(1000, 60, 60, 24))), mul(1000, 60, 60, 24))
    2. start_time_of_hours_of_created_at = mul(floor(div(ms(latest_successful_visit_at), mul(1000, 60, 60))), mul(1000, 60, 60))
    3. hours = rint(div(sub($start_time_of_hours_of_created_at, $start_time_of_created_at), mul(1000, 60, 60)))
    

    不过,这对日期和月份不起作用,因为它们每个月的天数不同。此外,我们还没有将闰年纳入其中,因此这对于年份来说也不是一个很好的解决方案。

    您是在询问如何查询给定年份范围内的Solr,还是在询问如何从结果中返回的日期字段中提取年份?