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

Neo4j中duration.between与duration.inSeconds计算时间差结果为何不同?

问题分析与解答

最直接原因:计算的时间区间完全不同

你第一个查询计算的是**datetime1(2022-02-02T15:25:33)和datetime2(2022-02-02T22:06:12)**之间的分钟差,这两个时间属于同一天,间隔约6小时40分钟。

而第二个查询计算的是**date1(2022-04-08)和date2(2022-09-20)**之间的秒数转分钟,这两个日期间隔5个月12天,结果自然和前者完全不同。

就算用同一组时间,两种计算逻辑也有差异

假设你是笔误,想用datetime1和datetime2测试第二个查询,两种方式的结果仍会有细微区别:

  • duration.between(x.datetime1, x.datetime2).minutes 直接提取duration对象的分钟部分,取的是总分钟数的整数部分(比如总间隔400分39秒,返回值为400)。
  • duration.inSeconds(x.datetime1, x.datetime2).seconds/60 先计算总秒数再除以60,结果是带小数的浮点数(比如400.65)。

另外,针对date类型使用duration.inSeconds时,会自动将日期视为当天的00:00:00时间点计算秒数,而datetime是精确到具体时分秒的,这也是两类时间类型计算逻辑的本质区别。

验证示例

如果修正第二个查询为使用datetime1和datetime2:

match (x:Test)
return duration.inSeconds(x.datetime1, x.datetime2).seconds/60

返回结果为400.65,而第一个查询返回400,这就是两者的差异所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:15:41