资讯专栏INFORMATION COLUMN

Neo4j:Cypher的时间日期范围操作

DobbyKim / 1459人阅读

摘要:原文链接本周我工作中有一项任务,是使用查询语言去创建一个日期范围的数据集。如果你知道想要的天数,你会发现,通过上面的示例可以很容易获取这些天的集合。关于日期范围的操作就是这么简单,希望对你有用。

原文链接:https://markhneedham.com/blog...

本周我工作中有一项任务,是使用Cypher查询语言去创建一个日期范围的数据集。
我之前使用过duration函数,它能够对指定时期进行增加或删除操作,所以,我想我可以从这个函数开始。如果我想查找2019年1月1号之后一天的日期,可以通过下面的查询语句:

neo4j> WITH date("2019-01-01") AS startDate
     RETURN startDate + duration({days: 1}) AS date;
+------------+
| date       |
+------------+
| 2019-01-02 |
+------------+

下面我们扩展下这个代码,我们要得到2019年1月1号后5天的数据集,这时我们可以使用range函数。

neo4j> WITH date("2019-01-01") AS startDate
     RETURN [day in range(0, 5) | startDate + duration({days: day})]
     AS dates;
+--------------------------------------------------------------------------+
| dates                                                                    |
+--------------------------------------------------------------------------+
| [2019-01-01, 2019-01-02, 2019-01-03, 2019-01-04, 2019-01-05, 2019-01-06] |
+--------------------------------------------------------------------------+

如果你知道想要的天数,你会发现,通过上面的示例可以很容易获取这些天的集合。但是,如果我们仅知道开始日期和结束日期,要如何获取这中间天数的集合呢?这时我们就可以试试duration.inDays函数了,它能计算两个日期之间的范围。

neo4j> RETURN duration.inDays(date("2019-01-01"), date("2019-01-06")) AS difference;
+------------+
| difference |
+------------+
| P0M5DT0S   |
+------------+

这是什么鬼?别急,inDays返回的是一个对象,可以通过days属性得到天数。

neo4j> RETURN duration.inDays(date("2019-01-01"), date("2019-01-06")).days AS days;
+------+
| days |
+------+
| 5    |
+------+

下面我们更新一下最开始的示例,用开始日期和结束日期去替换到Cypher查询语句中硬编码的天数。

neo4j> WITH date("2019-01-01") AS startDate, date("2019-01-06") AS endDate
       WITH startDate, duration.inDays(startDate, endDate).days AS days
       RETURN [day in range(0, days) | startDate + duration({days: day})]
       AS dates;
+--------------------------------------------------------------------------+
| dates                                                                    |
+--------------------------------------------------------------------------+
| [2019-01-01, 2019-01-02, 2019-01-03, 2019-01-04, 2019-01-05, 2019-01-06] |
+--------------------------------------------------------------------------+

OK,关于Cypher日期范围的操作就是这么简单,希望对你有用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17936.html

相关文章

  • Python datetime模块参考手册

    摘要:模块提供的接口与标准库基本一致。相比于模块,模块的接口则更直观更容易调用。模块定义了两个常量这两个常量分别表示所能表示的最小最大年份。表示时间间隔,即两个时间点之间的长度。如月份为日期时间的字符串表示。 Python提供了多个内置模块用于操作日期时间,像 calendar,time,datetime。time模块提供的接口与C标准库 time.h 基本一致。相比于 time 模块,da...

    wums 评论0 收藏0
  • UDesign 组件更新 | 近期优化迭代

    摘要:一日期时间相关组件改版月初对日期时间相关组件交互上进行了一波大更新,主要是为了减少用户的操作成本,减少展示占用面积。单日期范围选择器中选择日期后,自动跳转至下一个框进行选择,都选择完成后自动确认。单日期范围选择器中使用双面板展示。一、日期时间相关组件改版(DatePicker、TimePicker)6 月初对日期时间相关组件DatePicker、TimePicker交互上进行了一波大更新,主...

    ernest.wang 评论0 收藏0
  • JavaScript标准库系列——Math对象和Date对象(二)

    摘要:目录导语对象对象对象方法的应用日历插件小结导语这是标准库系列的第二篇文章,主要讨论一下对象和对象,对象在平时处理一些数学操作时能起到事半功倍的作用,目前小羊接触到的对象的使用场景是动画制作对象作为关于时间的接口,能够将其应用于制作和时间相关 目录 导语 1. Math对象 2. Date对象 3. Date对象方法的应用——日历插件; 4. 小结 导语 这是《JavaScript标准...

    whinc 评论0 收藏0

发表评论

0条评论

DobbyKim

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<