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

如何编写Gremlin查询判断event_date是否在当前日期30天内?

Gremlin查询:判断event_date是否在当前日期30天范围内

针对你提供的Person节点数据集,以下是两种实用的Gremlin查询方案:

方案1:判断单个节点(id:p1)的日期范围

直接查询指定节点,返回是否处于当前日期前后30天区间的布尔结果:

g.V('p1')
  .hasLabel('Person')
  .project('node_id', 'is_in_30day_range')
  .by(id())
  .by(
    let(
      __.property('event_date').as('target_date'),
      currentDate().as('current_date')
    ).math('current_date - target_date').by('days').as('day_diff')
    .choose(
      __.and(gt('day_diff', -30), lt('day_diff', 30)),
      constant(true),
      constant(false)
    )
  )

方案2:批量筛选符合条件的所有Person节点

如果需要找出所有event_date在当前30天范围内的Person节点:

g.V()
  .hasLabel('Person')
  .where(
    let(
      __.property('event_date').as('target_date'),
      currentDate().as('current_date')
    ).math('current_date - target_date').by('days').is(between(-30, 30))
  )

关键说明

  1. 日期类型处理:确保event_date是日期类型而非字符串。如果存储的是字符串(如你的示例中'2023-08-31'),需要先转换为日期对象,可在property('event_date')后添加.map(unfold().toDate())完成转换。
  2. 时间精度调整:若需要精确到时分秒而非仅日期,将currentDate()替换为currentTimestamp(),并将by('days')改为by('seconds')(或对应时间单位)。
  3. 数据库兼容:部分图数据库(如JanusGraph)可能需要使用特定日期函数,例如用LocalDate.now()替代currentDate()(需提前导入java.time.LocalDate类)。

内容的提问来源于stack exchange,提问作者Akhil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:52:41