时间运算符
Cypher® 包含以下时间运算符
-
从时间点值或另一个
DURATION中减去DURATION:- -
将
DURATION与数字(INTEGER或FLOAT)相乘:* -
将
DURATION除以数字:/
有关求值为时间值类型的其他表达式,请参阅
| 运算符 | 左操作数 | 右操作数 | 结果值类型 |
|---|---|---|---|
|
时间点 |
|
时间点的类型 |
|
|
时间点 |
时间点的类型 |
|
时间点 |
|
时间点的类型 |
|
|
|
|
|
|
|
|
|
|
Number |
|
|
Number |
|
|
|
|
Number |
|
添加和减去 DURATION 值
DURATION 值可以与时间点值(如 LOCAL DATETIME)进行加减运算。在下面的示例中,localdatetime() 函数用于创建 LOCAL DATETIME 值,而 duration() 函数用于创建 DURATION 值。
LOCAL DATETIME 进行 DURATION 值的加减运算WITH localdatetime({year:1984, month:10, day:11, hour:12, minute:31, second:14}) AS aDateTime,
duration({years: 12, nanoseconds: 2}) AS aDuration
RETURN aDateTime + aDuration AS addition,
aDateTime - aDuration AS subtraction
| 加法 | 减法 |
|---|---|
|
|
行:1 |
|
当添加或减去一个 DURATION 导致日期不存在时,Cypher 会将该日期截断为最近的有效日期。例如,如果在 1 月 31 日增加 1 个月,结果将不是 2 月 31 日(无效日期),而是 2 月 28 日(闰年为 29 日)。
RETURN date("2011-01-31") + duration("P1M") AS truncatedDate
| truncatedDate |
|---|
|
行:1 |
当将两个 DURATION 值添加到时间点值时,应用持续时间的顺序会影响结果。
DURATION 值添加到 DATERETURN (date("2011-01-31") + duration("P1M")) + duration("P12M") AS date1,
date("2011-01-31") + (duration("P1M") + duration("P12M")) AS date2
在 date1 中,持续时间是依次添加的,因此在添加第一个月后日期被截断,结果为 2012-02-28。在 date2 中,持续时间先合并,截断只发生一次,结果为 2012-02-29。
| date1 | date2 |
|---|---|
|
|
行:1 |
|
忽略的组件
当对时间点值进行 DURATION 值的加减运算时,任何不适用于该特定类型的 DURATION 组件都将被忽略。(有关时间点值支持哪些组件的信息,请参阅 时间点组件)。例如,当将 DURATION 添加到 DATE 时,仅考虑 DURATION 值的 year、month 和 day 组件,而 hour、minute、second 和 nanosecond 将被忽略。此行为也适用于 LOCAL TIME 和 ZONED TIME。
DATE 进行 DURATION 值的加减运算WITH date({year:1984, month:10, day:11}) AS aDate,
duration({years: 12, nanoseconds: 2}) AS aDuration
RETURN aDate + aDuration AS addition,
aDate - aDuration AS subtraction
| 加法 | 减法 |
|---|---|
|
|
行:1 |
|
乘除 DURATION 值
当乘除 DURATION 时,每个组件会分别处理。在乘法中,每个组件的值乘以给定的因子;在除法中,每个组件除以给定的数字。如果除法的结果无法容纳在原始组件中,它会溢出到较小的组件(例如,将天转换为小时)。这种溢出也会在乘以分数时发生。
DURATION 值WITH duration({days: 14, minutes: 12, seconds: 70, nanoseconds: 1}) AS aDuration
RETURN aDuration,
aDuration * 2 AS multipliedDuration,
aDuration / 3 AS dividedDuration
| aDuration | multipliedDuration | dividedDuration |
|---|---|---|
|
|
|
行:1 |
||