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

时间:2017-12-11 10:39:58

标签: neo4j cypher neo4j-apoc

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

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

2 个答案:

答案 0 :(得分:3)

APOC日期格式/解析/添加/转换功能支持的单位是: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表示中的月/年字段,并对其进行一些数学计算。我将在APOC中看到我们能够支持的内容。

答案 1 :(得分:0)

有些喜欢

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

希望这有帮助。

此致 汤姆