Neo4j 不可剥夺的日期:“;空";使用APOC.DATE.PARSE

Neo4j 不可剥夺的日期:“;空";使用APOC.DATE.PARSE,neo4j,neo4j-apoc,Neo4j,Neo4j Apoc,我正在使用apoc计算两个日期之间的差异。当我在MATCH子句中为N.ID提供值时,它工作。但是当我删除N.ID时,它失败了,因为我正在尝试为一组ID而不是单个ID处理代码 MATCH (N:PERSON)-[M:PLACED]-(K:ORDER) WHERE K.ORDER_CODE="A23" and N.ID=2511217 WITH N ,max(apoc.date.parse(SUBSTRING(M.ORDER_DATE,0,8),'d',"yyyymmdd")) AS initi

我正在使用apoc计算两个日期之间的差异。当我在
MATCH
子句中为
N.ID
提供值时,它工作。但是当我删除
N.ID
时,它失败了,因为我正在尝试为一组ID而不是单个ID处理代码

MATCH (N:PERSON)-[M:PLACED]-(K:ORDER) WHERE  K.ORDER_CODE="A23"  and N.ID=2511217
WITH N ,max(apoc.date.parse(SUBSTRING(M.ORDER_DATE,0,8),'d',"yyyymmdd")) AS initialTime,
apoc.date.parse(SUBSTRING(N.charge_DATE,0,8),'d',"yyyymmdd") AS finalTime
RETURN N.ID, finalTime - initialTime as difference ;
N.ID
差异
251217 4

但是,当删除
N.ID
时,我得到:

MATCH (N:PERSON)-[M:PLACED]-(K:ORDER) WHERE  K.ORDER_CODE="A23"    
WITH N ,max(apoc.date.parse(SUBSTRING(M.ORDER_DATE,0,8),'d',"yyyymmdd")) AS initialTime,
apoc.date.parse(SUBSTRING(N.charge_DATE,0,8),'d',"yyyymmdd") AS finalTime
RETURN N.ID, finalTime - initialTime as difference ;
Neo.ClientError.Procedure.ProcedureCallFailed:未能调用函数
apoc.date.parse
:原因:java.text.ParseException:不可解析的日期:“NULL”


我认为这是由于聚合函数
max
。 您能否尝试使用此查询:

MATCH (N:PERSON)-[M:PLACED]-(K:ORDER) WHERE  K.ORDER_CODE="A23"
WITH 
    N ,
    apoc.date.parse(SUBSTRING(M.ORDER_DATE,0,8),'d',"yyyymmdd") AS initialTime,
    apoc.date.parse(SUBSTRING(N.charge_DATE,0,8),'d',"yyyymmdd") AS finalTime
WITH N, max(initialTime) AS initialTime, finalTime
RETURN N.ID, finalTime - initialTime as difference ;

看起来有多个
PERSON
节点下了相同的
订单
,但其中一些节点缺少查询所需的
charge\u DATE
属性。

我仍然会遇到相同的错误-有或没有MAX。当我使用特定ID限定“Where”子句时,它会工作,但在删除时失败。