当前位置: 首页 > 知识库问答 >
问题:

Neo4j在行导入时使用merge语句将string转换为datetime

艾成益
2023-03-14

我有以下导入,它使用来自csv的逐行数据。

// NO ATTACHMENT OR LINK
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM ("file:///sessions/Hourly_Parsed/2019-12-10_00_hourly_parsed_mail_logs.csv") AS row
MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld})
MERGE (b:Recipient { name: row.To})
WITH a,b,row
WHERE row.Url = "false" AND row.FileHash = "false"
CALL apoc.merge.relationship(a, row.Outcome2, {}, {}, b) YIELD rel as rel1
RETURN a,b

我想将csv(datetime)中的datetime字段添加到发件人收件人节点。

到目前为止,我已经看到了很多关于字符串转换的内容,但通常是在unwind语句或return部分。如何添加带有datetime的字符串并转换为DateFormat。

我正在寻找一个解决方案,并尝试了许多事情,如以下,但这不起作用:

MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld, datetime: date(row.DateTime)})

我的字符串datetime的格式是:

"2019-11-20 10:00:01"

共有1个答案

芮明知
2023-03-14

您的日期字符串非常接近于Neo4j可以直接解析的ISO8601日期字符串--只是缺少了日期和时间组件之间的t分隔符。

一种方法是将字符串中间的空格替换为t并让Neo4j解析日期和时间:

WITH '2019-11-20 10:00:01' AS d
RETURN datetime(replace(d, ' ', 'T'))

另一种方法是使用APOC,它可以直接解析该日期格式,并在毫秒内返回一个值,然后可以从该值构建DateTime类型:

WITH '2019-11-20 10:00:01' AS d
RETURN datetime({ epochmillis: apoc.date.parse(d) })
 类似资料:
  • 问题内容: 如何转换字符串字段并用于Where子句。 衬板是varchar2 例外:无效的数字 问题答案: 仅在数字时比较 或简单:

  • 我有个方法 所以本质上是这样的: exec(这里的一些java魔术将str3转换为string[],然后将这个string[]传递给这个exec方法本身);

  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!

  • 问题内容: 我只想编写这样的代码: 我以为可以代表任何类型,所以也可以代表任何类型,现在我知道我错了,是一个整体类型,不能视为。 因此,有人可以帮助我如何使此代码正常工作,或其他解决方案吗? PS :我知道或可以相互转换,但是实际上这并不是我的意图,可能还有另一种类型,而不是and 。 问题答案: 现在我知道我错了,是一个整体类型,不能视为。 是的,那是因为它是它自己的类型(而不是其他任何类型的“