neo4j使用详解(九、cypher持续时间函数语法——最全参考)

请添加图片描述


Neo4j系列导航:
neo4j安装及简单实践
cypher语法基础
cypher插入语法
cypher插入语法
cypher查询语法
cypher通用语法
cypher函数语法
neo4j索引及调优


7.持续时间函数

持续时间(时间段)函数我们使用duration来操作

7.1.创建duration

9.1.1.使用时间组件

duration([ {years, quarters, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds} ])

实例:

unwind [
    duration({days: 14, hours:16, minutes: 12}),
    duration({months: 5, days: 1.5}),
    duration({months: 0.75}),
    duration({weeks: 2.5}),
    duration({minutes: 1.5, seconds: 1, milliseconds: 123, microseconds: 456, nanoseconds: 789}),
    duration({minutes: 1.5, seconds: 1, nanoseconds: 123456789})
] as aDuration
return aDuration

结果:

返回值
P14DT16H12M
P5M1DT12H
P22DT19H51M49.5S
P17DT12H
PT1M31.123456789S
PT1M31.123456789S

7.1.1.使用时间格式字符串

通过解析string时间量的表示而获得的值 duration(temporalAmount)

实例:

unwind [
    duration("P14DT16H12M"),
    duration("P5M1.5D"),
    duration("P0.75M"),
    duration("PT0.75M"),
    duration("P2012-02-02T14:37:21.545")
] as aDuration
return aDuration

结果:

返回值
P14DT16H12M
P5M1DT12H
P22DT19H51M49.5S
PT45S
P2012Y2M2DT14H37M21.545S

7.2.计算时间差

duration()具有计算两个时间瞬时值之间逻辑差异(以天、月等为单位)的子函数

函数含义
duration.between(a, b)计算a和b的时差,结果单位为月、日、秒和次秒
duration.inMonths(a, b)计算a和b的月差,以整月为单位,小于一个月的不计算
duration.inDays(a, b)计算a和b的日差,以整天为单位,小于一天的不计算
duration.inSeconds(a, b)计算a和b的秒差,以整秒为单位

7.2.1.duration.between函数

返回duration等于两个给定时刻之间的差值 duration.between(instant1, instant2)

注意事项:

  • 如果instant2早于 发生instant1,结果duration将为负。
  • 如果instant1有时间分量而instant2没有,则instant2假定 的时间分量为午夜,反之亦然。
  • 如果instant1具有时区部分而instant2没有时区部分,则instant2假定 的时区部分与 的时区部分相同instant1,反之亦然。
  • 如果instant1具有日期分量而instant2没有,则instant2假定 的日期分量与 的日期分量相同instant1,反之亦然。

实例:

unwind [
    duration.between(date("1984-10-11"), date("1985-11-25")),
    duration.between(date("1985-11-25"), date("1984-10-11")),
    duration.between(date("1984-10-11"), datetime("1984-10-12T21:40:32.142+0100")),
    duration.between(date("2015-06-24"), localtime("14:30")),
    duration.between(localtime("14:30"), time("16:30+0100")),
    duration.between(localdatetime("2015-07-21T21:40:32.142"), localdatetime("2016-07-21T21:45:22.142")),
    duration.between(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'}))
] as aDuration
return aDuration

结果:

返回值
P1Y1M14D
P-1Y-1M-14D
P1DT21H40M32.142S
PT14H30M
PT2H
P1YT4M50S
PT1H

7.2.2.duration.inMonths函数

两个给定时刻之间的整月、整季或整年之差的值 duration.inMonths(instant1, instant2)

实例:

unwind [
    duration.inMonths(date("1984-10-11"), date("1985-11-25")),
    duration.inMonths(date("1985-11-25"), date("1984-10-11")),
    duration.inMonths(date("1984-10-11"), datetime("1984-10-12T21:40:32.142+0100")),
    duration.inMonths(date("2015-06-24"), localtime("14:30")),
    duration.inMonths(localdatetime("2015-07-21T21:40:32.142"), localdatetime("2016-07-21T21:45:22.142")),
    duration.inMonths(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'}))
] as aDuration
return aDuration

结果:

返回值
P1Y1M
P-1Y-1M
PT0S
PT0S
P1Y
PT0S

7.2.3.duration.inDays函数

两个给定时刻之间的整天或整周之差的值 duration.inDays(instant1, instant2)

实例:

unwind [
    duration.inDays(date("1984-10-11"), date("1985-11-25")),
    duration.inDays(date("1985-11-25"), date("1984-10-11")),
    duration.inDays(date("1984-10-11"), datetime("1984-10-12T21:40:32.142+0100")),
    duration.inDays(date("2015-06-24"), localtime("14:30")),
    duration.inDays(localdatetime("2015-07-21T21:40:32.142"), localdatetime("2016-07-21T21:45:22.142")),
    duration.inDays(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'}))
] as aDuration
return aDuration

结果:

返回值
P410D
P-410D
P1D
PT0S
P366D
PT0S

7.2.4.duration.inSeconds函数

两个给定时刻之间以秒和秒的分数、分钟或小时为单位的差值 duration.inSeconds(instant1, instant2)

实例:

unwind [
    duration.inSeconds(date("1984-10-11"), date("1984-10-12")),
    duration.inSeconds(date("1984-10-12"), date("1984-10-11")),
    duration.inSeconds(date("1984-10-11"), datetime("1984-10-12T01:00:32.142+0100")),
    duration.inSeconds(date("2015-06-24"), localtime("14:30")),
    duration.inSeconds(datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/Stockholm'}), datetime({year: 2017, month: 10, day: 29, hour: 0, timezone: 'Europe/London'}))
] as aDuration
return aDuration

结果:

返回值
PT24H
PT-24H
PT25H32.142S
PT14H30M
PT1H
  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值