如何在Neo4j中将日期时间转换为时间戳?含加载数据示例
嘿,针对你问的这两个Neo4j日期时间转时间戳的问题,我来给你拆解解决方案,都是实际项目里常用的方法:
1. 在Neo4j中直接将日期时间转换为时间戳
Neo4j的datetime类型自带了获取时间戳的属性,处理起来很灵活:
- 如果你的数据已经是
datetime类型的属性,直接访问它的epochMillis属性就能得到毫秒级时间戳:MATCH (n:YourNode) RETURN n.yourDateTimeProp.epochMillis AS timestampInMillis - 如果日期是字符串格式(比如你给出的
2020-04-07T12:39:38.027Z这种标准ISO格式),先把字符串转成datetime类型,再取时间戳:
上面的代码会分别返回// 直接转换并获取毫秒级时间戳 RETURN datetime("2020-04-07T12:39:38.027Z").epochMillis AS timestampInMillis // 如果需要秒级时间戳,转成整数即可 RETURN toInteger(datetime("2020-04-07T12:39:38.027Z").epochMillis / 1000) AS timestampInSeconds1586243978027(毫秒)和1586243978(秒)。
2. 加载数据时将日期时间转换为时间戳
在导入数据阶段直接完成转换,能避免后续重复处理,这里分两种常见导入场景说明:
- 使用LOAD CSV导入:
假设你的CSV文件里有一列叫event_date,值是2020-04-07T12:39:38.027Z这类字符串,导入时可以直接转换:LOAD CSV WITH HEADERS FROM 'file:///your_dataset.csv' AS row CREATE (e:Event { eventTimestamp: datetime(row.event_date).epochMillis, eventName: row.event_name }) - 使用APOC工具导入(比如JSON数据):
如果是导入JSON格式的数据,同样可以在导入过程中处理日期转换:CALL apoc.load.json('file:///your_data.json') YIELD value CREATE (e:Event { eventTimestamp: datetime(value.event_date).epochMillis, eventDetails: value.details })
注意:如果你的日期格式不是标准ISO格式,就需要用APOC的apoc.date.parse函数指定格式,比如:
RETURN apoc.date.parse("2020-04-07 12:39:38", "ms", "yyyy-MM-dd HH:mm:ss") AS timestamp
不过你给出的2020-04-07T12:39:38.027Z是标准ISO格式,直接用datetime()函数最省心。
内容的提问来源于stack exchange,提问作者Pallavi Choudhary
相关产品推荐
相关产品推荐

