Neo4j:如何计算 neo4j 3.x 版本中特定日期与今天日期之间的年份差异?

Neo4j: How to calculate year difference between particular date and today's date in neo4j 3.x version?

我有带有个人标签的节点,我也在其中存储他们的出生日期。例如:

Person
{
  name: Tim
  D.O.B: 01/23/1990
}

现在我需要计算他截至当前日期和时间的年龄(即 27 岁或 27 岁 10 个月 18 天)。那么,谁能告诉我如何执行它?

P.S.: 我尝试了以下但似乎遗漏了一些东西:

WITH apoc.date.parse('01/23/1990', 'y', 'MM/dd/yyyy') AS startDate,
     apoc.date.format(timestamp(),'y','MM/dd/yyyy') as endDate,
     apoc.date.parse(endDate,'y','MM/dd/yyyy') as ed

 RETURN ed - 4

有些喜欢

WITH apoc.date.parse('01/23/1990', 'y', 'MM/dd/yyyy') AS startDate
RETURN apoc.date.convert(timestamp() - startDate,"ms","d");

也许吧?

希望对您有所帮助。

此致, 汤姆

A​​POC 日期 format/parse/add/convert 函数支持的单位是:ms,s,m,h,d and their long forms。要使用月份,您需要使用特定的日历系统,并且没有通用的月份时间单位来进行转换或添加,因为不同的月份由不同的日子组成(然后是 2 月的闰日)。

多年来,您将不得不使用日单位并使用 365 除法。

这是一个可以让您以年和日为单位计算年龄的查询。

WITH apoc.date.parse('01/23/1990', 'd', 'MM/DD/yyyy') as birth, apoc.date.convert(timestamp(), 'ms', 'd') as now
WITH now - birth as daysAlive
RETURN daysAlive / 365 as yearsAlive, daysAlive % 365 as daysExtra

如果您想进入几个月,最好使用 MM/DD/yyyy 表示中的 month/year 字段并在这些字段上进行一些数学运算。我将看看我们可以在 APOC 中提供哪些支持。