我在neo4j数据库工作。
我有csv文件列是ENTRY_DATE格式是“08-apr-15”字符串类型date.and当前日期格式是“21-10-2016”。如何更改字符串类型Entry_date就像当前日期格式。但是我需要将当前日期与entry_date列进行比较,然后计算两个日期之间的月份差异。
答案 0 :(得分:1)
您可以使用Cypher的字符串函数解析这两个字符串。
WITH {current_date} AS current_date
WITH split(current_date, '-') AS month_tuple
WITH month_tuple[1] AS c_month, month_tuple[2] AS c_year
WITH {jan: 1, feb: 2, ... dec: 12} AS month_map, c_month, c_year
LOAD CSV WITH HEADERS FROM "place" AS row
WITH row, row.ENTRY_DATE as e_date, c_month, c_year, month_map
WITH row, c_month, c_year, split(e_date, '-') AS e_tuple, month_map
WITH row, c_month, c_year, e_tuple[2] AS e_year, e_tuple[1] AS e_month_key, month_map
WITH row, (toInt(e_year) -toInt(c_year)) * 12 as year_diff, month_map[e_month_key] - toInt(c_month) AS month_diff
WITH row, year_diff + month_diff AS months_later
但InverseFalcon肯定是正确的,如果通过后端处理这会更好。在导入之前清理CSV并传递更好的当前日期来源,您可以删除大部分查询。
答案 1 :(得分:0)
Neo4j根本不支持日期/时间操作。如果您的后端框架/语言具有良好的日期/时间支持,我建议在那里进行计算,而不是从数据库本身进行。
但是如果你正在寻找一个纯粹的neo4j解决方案,APOC程序库有一些conversion and formatting support,但如果这还不够,你可能想看看GraphAware's neo4j timetree。这应该为您提供一些图表操作,用于查找不同日期之间的年份或月份。