从neo4j节点属性中获取ISO日期

从neo4j节点属性中获取ISO日期,neo4j,cypher,Neo4j,Cypher,在一个图中,有个人节点,这些节点的属性包含关于一个人的生日和出生地的信息,例如 雅罗斯拉夫8.10.1679 阿尔库迪亚26.7.1689 是否有可能从文本类型的属性中获取ISO日期和位置,并将其放入新属性中?当然有可能 一种方法是搜索不包含新属性的节点;然后使用split函数将文本分隔为空格 和期间;然后按照您需要的格式重新组合日期 像这样的 MATCH (person:Person) WHERE NOT exists(person.birthdate) WITH person, split

在一个图中,有个人节点,这些节点的属性包含关于一个人的生日和出生地的信息,例如

雅罗斯拉夫8.10.1679

阿尔库迪亚26.7.1689


是否有可能从文本类型的属性中获取ISO日期和位置,并将其放入新属性中?

当然有可能

一种方法是搜索不包含新属性的节点;然后使用
split
函数将文本分隔为空格 和期间;然后按照您需要的格式重新组合日期

像这样的

MATCH (person:Person)
WHERE NOT exists(person.birthdate)
WITH person, 
split(person.informations,' ')[0] AS place,
split(person.informations,' ')[1] AS date
WITH person, 
place, 
split(date,'.')[0] AS day,
split(date,'.')[1] AS month,
split(date,'.')[2] AS year
SET person.birth_place = place,
person.birthdate = substring('0000', 0, 4 - size(year)) + year 
    + '-' 
    + substring('00', 0, 2 - size(month)) + month 
    + '-' 
    + substring('00', 0, 2 - size(day)) + day

根据标准,年、月和日的值必须用前导零填充。罗杰,我加了一点前导零填充来加固它。读到1583年以前的书很有趣。