时间函数 - 持续时间

持续时间函数允许创建和操作时间 DURATION 值。

另请参阅 时间值时间运算符

duration()

详情

语法

duration(input)

描述

创建 DURATION 值。

参数

名称

类型

描述

input

任意

一个可选包含以下键的映射:'years'(年)、'months'(月)、'weeks'(周)、'days'(天)、'hours'(小时)、'minutes'(分钟)、'seconds'(秒)、'milliseconds'(毫秒)、'microseconds'(微秒)或 'nanoseconds'(纳秒)。

返回

DURATION

注意事项

必须提供至少一个参数(duration()duration({}) 无效)。

提供的参数数量没有限制。

DURATION 中较小单位(例如 seconds)的数量可能超过较大单位(例如 days)的阈值。

参数值可以表示为十进制小数。

参数值可以任意大。

参数值可以是负数。

DURATION 对象的 组件 可以单独访问。

示例 1. 使用持续时间组件的 duration()
查询
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

行数:6

示例 2. 使用 STRING 值的 duration()
查询
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

行数:5

duration.between()

详情

语法

duration.between(from, to)

描述

计算 from 瞬时(包含)和 to 瞬时(不包含)之间以逻辑单位表示的 DURATION

参数

名称

类型

描述

from

任意

表示起始瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

to

任意

表示结束瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

返回

DURATION

注意事项

如果 to 发生时间早于 from,则生成的 DURATION 将为负值。

如果 from 包含时间组件而 to 不包含,则 to 的时间组件被假定为午夜,反之亦然。

如果 from 包含时区组件而 to 不包含,则 to 的时区组件被假定与 from 的相同,反之亦然。

如果 to 包含日期组件而 from 不包含,则 from 的日期组件被假定与 to 的相同,反之亦然。

示例 3. duration.between()
查询
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

duration.inDays()

详情

语法

duration.inDays(from, to)

描述

计算 from 瞬时(包含)和 to 瞬时(不包含)之间以天为单位表示的 DURATION

参数

名称

类型

描述

from

任意

表示起始瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

to

任意

表示结束瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

返回

DURATION

注意事项

如果 to 发生时间早于 from,则生成的 DURATION 将为负值。

如果 from 包含时间组件而 to 不包含,则 to 的时间组件被假定为午夜,反之亦然。

如果 from 包含时区组件而 to 不包含,则 to 的时区组件被假定与 from 的相同,反之亦然。

如果 from 包含日期组件而 to 不包含,则 to 的日期组件被假定与 from 的相同,反之亦然。

任何小于一整天的差异都将被忽略。

通过返回 days 组件获取 DURATION 中的总天数。有关更多信息,请参阅 持续时间的组件

示例 4. duration.inDays()
查询
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

行数:6

duration.inMonths()

详情

语法

duration.inMonths(from, to)

描述

计算 from 瞬时(包含)和 to 瞬时(不包含)之间以月为单位表示的 DURATION

参数

名称

类型

描述

from

任意

表示起始瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

to

任意

表示结束瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

返回

DURATION

注意事项

如果 to 发生时间早于 from,则生成的 DURATION 将为负值。

如果 from 包含时间组件而 to 不包含,则 to 的时间组件被假定为午夜,反之亦然。

如果 from 包含时区组件而 to 不包含,则 to 的时区组件被假定与 from 的相同,反之亦然。

如果 from 包含日期组件而 to 不包含,则 to 的日期组件被假定与 from 的相同,反之亦然。

任何小于一整个月的差异都将被忽略。

通过返回 months 组件获取 DURATION 中的总月数。有关更多信息,请参阅 持续时间的组件

示例 5. duration.inMonths()
查询
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

行数:6

duration.inSeconds()

详情

语法

duration.inSeconds(from, to)

描述

计算 from 瞬时(包含)和 to 瞬时(不包含)之间以秒为单位表示的 DURATION

参数

名称

类型

描述

from

任意

表示起始瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

to

任意

表示结束瞬时的时间瞬时类型(DATELOCAL TIMEZONED TIMELOCAL DATETIMEZONED DATETIME)。

返回

DURATION

注意事项

如果 to 发生时间早于 from,则生成的 DURATION 将为负值。

如果 from 包含时间组件而 to 不包含,则 to 的时间组件被假定为午夜,反之亦然。

如果 from 包含时区组件而 to 不包含,则 to 的时区组件被假定与 from 的相同,反之亦然。

如果 from 包含日期组件而 to 不包含,则 to 的日期组件被假定与 from 的相同,反之亦然。

通过返回 seconds 组件获取 DURATION 中以秒计的天数。有关更多信息,请参阅 持续时间的组件

示例 6. duration.inSeconds()
查询
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

行数:5

© . All rights reserved.