时间运算符
Cypher® 包含以下时间运算符
-
从时间瞬时值或另一个
DURATION
中减去DURATION
:-
-
将
DURATION
与数字(INTEGER
或FLOAT
)相乘:*
-
将
DURATION
除以数字:/
有关计算结果为时间值类型的其他表达式,请参阅
运算符 | 左操作数 | 右操作数 | 结果值类型 |
---|---|---|---|
|
时间瞬时 |
|
时间瞬时的类型 |
|
|
时间瞬时 |
时间瞬时的类型 |
|
时间瞬时 |
|
时间瞬时的类型 |
|
|
|
|
|
|
|
|
|
|
数字 |
|
|
数字 |
|
|
|
|
数字 |
|
添加和减去 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 个月添加到 1 月 31 日,结果将不是 2 月 31 日(一个无效日期),而是 2 月 28 日(或闰年的 2 月 29 日)。
RETURN date("2011-01-31") + duration("P1M") AS truncatedDate
truncatedDate |
---|
|
行数:1 |
当将两个 DURATION
值添加到时间瞬时值时,应用这些持续时间的顺序会影响结果。
DATE
添加两个 DURATION
值RETURN (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
组件都将被忽略。(有关时间瞬时值支持哪些组件的信息,请参阅时间瞬时组件)。例如,当向 DATE
添加 DURATION
时,仅考虑 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 |