时间值
Cypher® 内置支持处理时间值,这些时间值可以作为属性存储在 Neo4j 数据库的节点和关系上。本节将讨论 Cypher 如何处理时区,然后更详细地探讨时间值。
|
时间值类型
下表列出了时间值类型及其支持的组件
类型 | 日期支持 | 时间支持 | 时区支持 |
---|---|---|---|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|
|
|
DATE
、LOCAL TIME
、ZONED TIME
、LOCAL DATETIME
和 ZONED DATETIME
都是时间瞬时类型。时间瞬时值表示具有不同精度的时间点。
相比之下,DURATION
不是时间瞬时类型。DURATION
表示一个时间量,捕获两个瞬时之间的时间差,并且可以是负值。DURATION
捕获两个瞬时之间的时间量,它不捕获开始时间和结束时间。
从 Neo4j 5.9 开始,一些时间类型已重命名。下表显示了时间类型的当前名称和旧名称。
类型 | 旧类型名称 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
时区
时区表示为 UTC 的偏移量,或表示为命名时区的逻辑标识符(这些基于 IANA 时区数据库)。在任何一种情况下,时间在内部都以 UTC 存储,并且仅在显示时间时应用时区偏移。这意味着可以对时间瞬时进行排序而不考虑时区。但是,如果两个时间在 UTC 中相同,则它们按时区排序。
使用命名时区创建时间时,会根据时区数据库中的规则计算与 UTC 的偏移量,以在 UTC 中创建时间瞬时,并确保命名时区是有效的。
IANA 时区数据库中的时区规则可能会发生变化。例如,某个地区的夏令时规则可能会发生更改。如果这种情况发生在时间瞬时创建之后,则所显示的时间可能与原始输入的时间不同,就当地时区而言。但是,UTC 中的绝对时间将保持不变。
在 Cypher 中指定时区有三种方式
-
以小时和分钟表示与 UTC 的偏移量(ISO 8601)。
-
指定一个命名时区。
-
同时指定偏移量和时区名称(要求两者匹配)。
有关示例,请参阅指定时区。
命名时区形式使用 IANA 时区数据库的规则来管理夏令时 (DST)。
数据库的默认时区可以使用配置选项 db.temporal.timezone
进行配置。此配置选项影响以下函数的 temporal 类型创建:
-
获取当前日期和时间而不指定时区。
-
从其组件创建 temporal 类型而不指定时区。
-
通过解析
STRING
创建 temporal 类型而不指定时区。 -
通过组合或选择不带时区组件的值来创建 temporal 类型,且不指定时区。
-
截断不带时区组件的 temporal 值,且不指定时区。
时间瞬时
指定时间瞬时
时间瞬时由三部分组成:date
、time
和 timezone
。这些部分可以组合生成各种时间值类型。字符 T
是一个字面字符。
时间瞬时类型 | 组成部分 |
---|---|
|
|
|
|
|
|
|
|
|
|
*当 date
和 time
组合时,date
必须是完整的;即完全标识特定的一天。
指定日期
组件 | 格式 | 描述 |
---|---|---|
年 |
|
至少指定四位数字(在某些情况下适用特殊规则)。 |
月 |
|
指定两位数字,从 |
周 |
|
始终以 |
季度 |
|
始终以 |
月份中的日期 |
|
指定两位数字,从 |
星期几 |
|
指定一位数字,从 |
季度中的日期 |
|
指定两位数字,从 |
年份中的序数日 |
|
指定三位数字,从 |
如果年份在 0000
之前或 9999
之后,则适用以下附加规则:
-
减号
-
必须作为0000
之前的年份前缀(例如-3000-01-01
)。 -
加号
+
必须作为9999
之后的年份前缀(例如+11000-01-01
)。 -
年份必须与下一个组件用
-
分隔-
如果下一个组件是月份(例如
+11000-01
)。 -
如果下一个组件是年份中的日期(例如
+11000-123
)。
-
如果年份组件带有 -
或 +
前缀,并且与下一个组件分隔,则 Year
最多允许包含九位数字。因此,允许的年份范围在 -999,999,999 到 +999,999,999 之间。对于所有其他情况,即年份在 0000
到 9999
(含)之间,Year
必须恰好是四位数字(年份组件被解释为公元 (CE) 年份)。
以下是指定日期支持的格式:
格式 | 描述 | 示例 | 示例解释 |
---|---|---|---|
|
日历日期:年-月-日 |
|
|
|
日历日期:年-月-日 |
|
|
|
日历日期:年-月 |
|
|
|
日历日期:年-月 |
|
|
|
周日期:年-周-日 |
|
|
|
周日期:年-周-日 |
|
|
|
周日期:年-周 |
|
|
|
周日期:年-周 |
|
|
|
季度日期:年-季度-日 |
|
|
|
季度日期:年-季度-日 |
|
|
|
季度日期:年-季度 |
|
|
|
季度日期:年-季度 |
|
|
|
序数日期:年-日 |
|
|
|
序数日期:年-日 |
|
|
|
年 |
|
|
最小的组件可以省略。Cypher 会假定省略的组件具有其可能的最低值。例如,2013-06
将被解释为与 2013-06-01
相同的日期。
指定时间
组件 | 格式 | 描述 |
---|---|---|
|
|
指定两位数字,从 |
|
|
指定两位数字,从 |
|
|
指定两位数字,从 |
|
|
指定从 |
Cypher 不支持闰秒;UTC-SLS(平滑闰秒的 UTC)用于管理 UTC 和 TAI(国际原子时)之间的时间差。
以下是指定时间支持的格式:
格式 | 描述 | 示例 | 示例解释 |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
最小的组件可以省略。例如,时间可以只指定 Hour
和 Minute
,而省略 Second
和 fraction
。另一方面,指定 Hour
和 Second
而省略 Minute
是不可能的。
指定时区
时区可以通过以下方式之一指定:
-
作为与 UTC 的偏移量。
-
使用
Z
缩写表示 UTC (±00:00
) 时区。
当指定与 UTC 的偏移量作为时区时,适用以下规则:
-
时区始终以加号 (
+
) 或减号 (-
) 开头。-
正偏移量,即以
+
开头的时区,表示 UTC 以东的时区。 -
负偏移量,即以
-
开头的时区,表示 UTC 以西的时区。
-
-
两位数的小时偏移量跟在
+/-
符号后面。 -
一个可选的两位数分钟偏移量跟在小时偏移量后面,可选地用冒号 (
:
) 分隔。 -
国际日期线的时区表示为
+12:00
或-12:00
,具体取决于国家/地区。
创建 ZONED DATETIME
时间瞬时类型的值时,也可以使用命名时区(使用 IANA 时区数据库中的名称)指定时区。这可以作为偏移量的补充或替代提供。命名时区放在最后,并用方括号 ([]
) 括起来。如果同时提供偏移量和命名时区,则偏移量必须与命名时区匹配。
以下是指定时区支持的格式:
格式 | 描述 | 示例 | 支持 ZONED DATETIME |
支持 ZONED TIME |
---|---|---|---|---|
|
UTC |
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
时间瞬时的组件
时间瞬时值的组件可以作为属性访问。
组件 | 描述 | 类型 | 范围/格式 | DATE |
ZONED DATETIME |
LOCAL DATETIME |
ZONED TIME |
LOCAL TIME |
---|---|---|---|---|---|---|---|---|
|
|
至少 4 位数字。更多信息请参阅使用 |
||||||
|
一年中的季度组件。 |
|
|
|||||
|
一年中的月份组件。 |
|
|
|||||
|
一年中的周组件。[2] |
|
|
|||||
|
周组件所属的年份。[3] |
|
至少 4 位数字。更多信息请参阅使用 |
|||||
|
季度中的日期组件。 |
|
|
|||||
|
季度中的日期组件( |
|
|
|||||
|
月份中的日期组件。 |
|
|
|||||
|
年份中的日期组件。 |
|
|
|||||
|
星期几组件(一周的第一天是星期一)。 |
|
|
|||||
|
星期几组件( |
|
|
|||||
|
小时组件。 |
|
|
|||||
|
分钟组件。 |
|
|
|||||
|
秒组件。[4] |
|
|
|||||
|
毫秒组件。 |
|
|
|||||
|
微秒组件。 |
|
|
|||||
|
纳秒组件。 |
|
|
|||||
|
时区组件。 |
|
根据时区的指定方式,这要么是时区名称,要么是 UTC 偏移量,格式为 |
|||||
|
时区偏移量。 |
|
格式为 |
|||||
|
时区偏移量(分钟)。 |
|
|
|||||
|
时区偏移量(秒)。 |
|
|
|||||
|
|
|
在 |
|||||
|
|
|
在 |
示例
要处理特定时间瞬时类型,必须使用其对应的函数。例如,为了创建 ZONED DATETIME
类型的属性值,必须使用 datetime()
函数。
具体示例请参阅:
DATE
要处理 DATE
值,包括创建、解析和提取组件,请使用 date()
函数。
DATE
DATE
属性值CREATE (n:Label)
SET n.date = date("2025-02-18")
RETURN n.date AS date, valueType(n.date) AS temporalValueType
date | temporalValueType |
---|---|
|
|
行数:1 |
DATE
属性值CREATE (n:Label)
SET n.date = date({year: 2025, month: 2, day: 18})
RETURN n.date AS date, valueType(n.date) AS temporalValueType
date | temporalValueType |
---|---|
|
|
行数:1 |
DATE
RETURN date('+2015-W13-4') AS theDate
theDate |
---|
|
行数:1 |
DATE
值的组件WITH date({year: 1984, month: 10, day: 11}) AS d
RETURN d.year, d.quarter, d.month, d.week, d.weekYear, d.day, d.ordinalDay, d.dayOfWeek, d.dayOfQuarter
d.year | d.quarter | d.month | d.week | d.weekYear | d.day | d.ordinalDay | d.dayOfWeek | d.dayOfQuarter |
---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
行数:1 |
LOCAL TIME
要处理 LOCAL TIME
值,包括创建、解析和提取组件,请使用 localtime()
函数。
LOCAL TIME
LOCAL TIME
属性值CREATE (n:Label)
SET n.localTime = localtime("12:34:56.789")
RETURN n.localTime AS localTime, valueType(n.localTime) AS temporalValueType
localTime | temporalValueType |
---|---|
|
|
行数:1 |
LOCAL TIME
属性值CREATE (n:Label)
SET n.localTime = localtime({hour: 12, minute: 34, second: 56, millisecond: 789})
RETURN n.localTime AS localTime, valueType(n.localTime) AS temporalValueType
localTime | temporalValueType |
---|---|
|
|
行数:1 |
LOCAL TIME
值的组件WITH localtime({hour: 12, minute: 34, second: 56, millisecond: 789}) AS t
RETURN t.hour, t.minute, t.second, t.millisecond
t.hour | t.minute | t.second | t.millisecond |
---|---|---|---|
|
|
|
|
行数:1 |
ZONED TIME
要处理 ZONED TIME
值,包括创建、解析和提取组件,请使用 time()
函数。
ZONED TIME
ZONED TIME
属性值CREATE (n:Label)
SET n.zonedTime = time("12:34:56.789+02:00")
RETURN n.zonedTime AS zonedTime, valueType(n.zonedTime) AS temporalValueType
zonedTime | temporalValueType |
---|---|
|
|
行数:1 |
ZONED TIME
属性值CREATE (n:Label)
SET n.zonedTime = time({hour: 12, minute: 34, second: 56, millisecond: 789, timezone: 'Europe/Stockholm'})
RETURN n.zonedTime AS zonedTime, valueType(n.zonedTime) AS temporalValueType
time | temporalValueType |
---|---|
|
|
行数:1 |
ZONED TIME
值的组件WITH time("12:34:56.789+02:00") AS t
RETURN t.hour, t.minute, t.second, t.millisecond, t.offset
t.hour | t.minute | t.second | t.millisecond | t.offset |
---|---|---|---|---|
|
|
|
|
|
行数:1 |
LOCAL DATETIME
要处理 LOCAL DATETIME
值,包括创建、解析和提取组件,请使用 localdatetime()
函数。
LOCAL DATETIME
LOCAL DATETIME
属性值CREATE (n:Label)
SET n.localDateTime = localdatetime("2025-02-18T12:34:56")
RETURN n.localDateTime AS localDateTime, valueType(n.localDateTime) AS temporalValueType
localDateTime | temporalValueType |
---|---|
|
|
行数:1 |
LOCAL DATETIME
属性值CREATE (n:Label)
SET n.localDateTime = localdatetime({year: 2025, month: 2, day: 18, hour: 12, minute: 34, second: 56, millisecond: 789})
RETURN n.localDateTime AS localDateTime, valueType(n.localDateTime) AS temporalValueType
localDatetime | temporalValueType |
---|---|
|
|
行数:1 |
LOCAL DATETIME
RETURN localdatetime('2015185T19:32:24') AS theLocalDateTime
theLocalDateTime |
---|
|
行数:1 |
LOCAL DATETIME
值的组件WITH localdatetime({year: 2025, month: 2, day: 19, hour: 12, minute: 34, second: 56, millisecond: 789}) AS t
RETURN t.year, t.month, t.day, t.hour, t.minute, t.second, t.millisecond
t.year | t.month | t.day | t.hour | t.minute | t.second | t.millisecond |
---|---|---|---|---|---|---|
|
|
|
|
|
|
|
行数:1 |
ZONED DATETIME
要处理 ZONED DATETIME
值,包括创建、解析和提取组件,请使用 datetime()
函数。
ZONED DATETIME
ZONED DATETIME
属性值CREATE (n:Label)
SET n.zonedDateTime = datetime("2025-02-18T12:34:56.789+02:00")
RETURN n.zonedDateTime AS zonedDateTime, valueType(n.zonedDateTime) AS temporalValueType
zonedDateTime | temporalValueType |
---|---|
|
|
行数:1 |
ZONED DATETIME
属性值CREATE (n:Label)
SET n.zonedDateTime = datetime({year: 2025, month: 2, day: 18, hour: 12, minute: 34, second: 56, millisecond: 789, timezone: 'Europe/Stockholm'})
RETURN n.zonedDateTime, valueType(n.zonedDateTime) AS temporalValueType
zonedDateTime | temporalValueType |
---|---|
|
|
行数:1 |
ZONED DATETIME
属性值CREATE (n:Label)
SET n.zonedDateTime = datetime({timezone: 'Europe/Stockholm'})
RETURN n.zonedDateTime AS zonedDateTime, valueType(n.zonedDateTime) AS temporalValueType
zonedDateTime | temporalValueType |
---|---|
|
|
行数:1 |
ZONED DATETIME
RETURN datetime('2015-06-24T12:50:35.556+0100') AS theDateTime
theDateTime |
---|
|
行数:1 |
ZONED DATETIME
值的日期相关组件WITH datetime({
year: 1984, month: 11, day: 11,
hour: 12, minute: 31, second: 14, nanosecond: 645876123,
timezone: 'Europe/Stockholm'
}) AS d
RETURN d.year, d.quarter, d.month, d.week, d.weekYear, d.day, d.ordinalDay, d.dayOfWeek, d.dayOfQuarter
d.year | d.quarter | d.month | d.week | d.weekYear | d.day | d.ordinalDay | d.dayOfWeek | d.dayOfQuarter |
---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
行数:1 |
ZONED DATETIME
值的时间相关组件WITH datetime({
year: 1984, month: 11, day: 11,
hour: 12, minute: 31, second: 14, nanosecond: 645876123,
timezone: 'Europe/Stockholm'
}) AS d
RETURN d.hour, d.minute, d.second, d.millisecond, d.microsecond, d.nanosecond
d.hour | d.minute | d.second | d.millisecond | d.microsecond | d.nanosecond |
---|---|---|---|---|---|
|
|
|
|
|
|
行数:1 |
ZONED DATETIME
值的纪元时间以及时区相关组件WITH datetime({
year: 1984, month: 11, day: 11,
hour: 12, minute: 31, second: 14, nanosecond: 645876123,
timezone: 'Europe/Stockholm'
}) AS d
RETURN d.timezone, d.offset, d.offsetMinutes, d.epochSeconds, d.epochMillis
d.timezone | d.offset | d.offsetMinutes | d.epochSeconds | d.epochMillis |
---|---|---|---|---|
|
|
|
|
|
行数:1 |
截断时间值
Neo4j 中的截断函数允许您通过将时间值截断到指定的组件(例如年、月或秒)来降低其精度。
DATE
值要截断 DATE
值,请使用 date.truncate()
函数。
RETURN date.truncate('year') AS firstDay
firstDay |
---|
|
行数:1 |
RETURN date.truncate('week', date('2019-10-01'), {dayOfWeek: 4}) AS thursday
thursday |
---|
|
行数:1 |
LOCAL TIME
值要截断 LOCAL TIME
值,请使用 localtime.truncate()
函数。
LOCAL TIME
值的当前分钟的开始RETURN localtime.truncate('minute', localtime("12:34:56.789")) AS truncatedMinute
truncatedMinute |
---|
|
行数:1 |
LOCAL TIME
获取当前秒的开始RETURN localtime.truncate('second') AS currentSecond
currentSecond |
---|
|
行数:1 |
ZONED TIME
值要截断 ZONED TIME
值,请使用 time.truncate()
函数。
ZONED TIME
值的当前分钟的开始RETURN time.truncate('minute', time("12:34:56.789+02:00")) AS truncatedMinute
truncatedMinute |
---|
|
行数:1 |
ZONED TIME
截断到最近的分钟RETURN time.truncate('minute', time()) AS currentTime
truncatedTime |
---|
|
行数:1 |
LOCAL DATETIME
值要截断 LOCAL DATETIME
值,请使用 localdatetime.truncate()
函数。
LOCAL DATETIME
的小时开始RETURN localdatetime.truncate('hour', localdatetime("2025-02-18T12:34:56.789")) AS truncatedHour
truncatedHour |
---|
|
行数:1 |
LOCAL DATETIME
中的开始RETURN localdatetime.truncate('month') AS truncatedMonth
truncatedMonth |
---|
|
行数:1 |
ZONED DATETIME
值要截断 ZONED DATETIME
值,请使用 datetime.truncate()
函数。
ZONED DATETIME
的分钟开始RETURN datetime.truncate('minute', datetime("2025-02-18T12:34:56.789+02:00")) AS truncatedZonedDateTime
truncatedZonedDateTime |
---|
|
行数:1 |
ZONED DATETIME
中的开始RETURN datetime.truncate('week', datetime(), {dayOfWeek: 3}) AS startOfWednesday
startOfWednesday |
---|
|
行数:1 |
持续时间
指定持续时间
DURATION
表示一个时间量,捕获两个瞬时之间的时间差,并且可以是负值。
DURATION
的规范以 P
为前缀,可以使用基于单位的形式或基于日期和时间的形式:
-
基于单位的形式:
P[nY][nM][nW][nD][T[nH][nM][nS]]
-
方括号 (
[]
) 表示可选组件(零值的组件可以省略)。 -
n
表示 64 位整数范围内的数值。 -
最后一个(也是最小的)组件的值可能包含小数部分。
-
每个组件必须后跟一个表示单位的组件标识符。
-
基于单位的形式使用
M
作为月份和分钟的后缀。因此,时间部分必须始终以T
为前缀,即使没有给出日期部分的任何组件。 -
持续时间的最大总长度受 64 位整数可容纳的秒数限制。
-
-
基于日期和时间的形式:
P<date>T<time>
。-
与基于单位的形式不同,此形式要求每个组件都在有效
LOCAL DATETIME
的范围内。
-
下表列出了基于单位的形式的组件标识符:
组件标识符 | 描述 | 注释 |
---|---|---|
|
年 |
|
|
月 |
必须在 |
|
周 |
|
|
天 |
|
|
小时 |
|
|
分钟 |
必须在 |
|
秒 |
持续时间的组件
DURATION
可以有多个组件,每个组件都分为月、天和秒组。
DURATION
值的组件在其组件组内截断如下:
组件组 | 组件 | 描述 | 类型 | 详情 |
---|---|---|---|---|
月 |
|
年的总数。 |
|
每 |
|
季度的总数。 |
|
每年算作 |
|
|
月的总数。 |
|
每年算作 |
|
天 |
|
周的总数。 |
|
每 |
|
天的总数。 |
|
每周算作 |
|
秒 |
|
小时的总数。 |
|
每 |
|
分钟的总数。 |
|
每小时算作 |
|
|
秒的总数。 |
|
每小时算作 |
|
|
毫秒的总数 |
|
每 |
|
|
微秒的总数。 |
|
每毫秒算作 |
|
|
纳秒的总数。 |
|
每微秒算作 |
请注意:
|
也可以访问受组件组一阶组件限制的组件组的二阶组件:
组件 | 组件组 | 描述 | 类型 |
---|---|---|---|
|
月 |
组中不构成完整年份的季度数。 |
|
|
月 |
组中不构成完整年份的月数。 |
|
|
月 |
组中不构成完整季度的月数。 |
|
|
天 |
组中不构成完整周的天数。 |
|
|
秒 |
组中不构成完整小时的分钟数。 |
|
|
秒 |
组中不构成完整分钟的秒数。 |
|
|
秒 |
组中不构成完整秒的毫秒数。 |
|
|
秒 |
组中不构成完整秒的微秒数。 |
|
|
秒 |
组中不构成完整秒的纳秒数 |
|
示例
以下是使用 duration()
函数解析持续时间的示例。更多信息可以在此处找到。
14
天、16
小时和 12
分钟的持续时间RETURN duration('P14DT16H12M') AS theDuration
theDuration |
---|
|
行数:1 |
5
个月、1
天和 12
小时的持续时间RETURN duration('P5M1.5D') AS theDuration
theDuration |
---|
|
行数:1 |
45
秒的持续时间RETURN duration('PT0.75M') AS theDuration
theDuration |
---|
|
行数:1 |
2
周、3
天和 12
小时的持续时间RETURN duration('P2.5W') AS theDuration
theDuration |
---|
|
行数:1 |
DURATION
值的基于月的组件WITH duration({years: 1, months: 5, days: 111, minutes: 42}) AS d
RETURN d.years, d.quarters, d.quartersOfYear, d.months, d.monthsOfYear, d.monthsOfQuarter
d.years | d.quarters | d.quartersOfYear | d.months | d.monthsOfYear | d.monthsOfQuarter |
---|---|---|---|---|---|
|
|
|
|
|
|
行数:1 |
d.quarters
的值为 5
,因为持续时间的年份有四个季度,并且五个月中还有另一个季度。d.months
的值为 17
,因为它将持续时间年份中的 12 个月与五个月相加。d.quartersOfYear
是剩余的季度,计入下一个完整年份。类似地,d.monthsOfYear
和 d.monthsOfQuarter
分别计入下一个完整年份和季度。请参阅持续时间的组件中的“一阶 DURATION
组件”表和“二阶 DURATION
组件”表。
DURATION
值的基于天的组件WITH duration({months: 5, days: 25, hours: 1}) AS d
RETURN d.weeks, d.days, d.daysOfWeek
d.weeks | d.days | d.daysOfWeek |
---|---|---|
|
|
|
行数:1 |
d.weeks
的值为 3
,因为查询中的 25
天是三个完整的周(或 21
天)。d.daysOfWeek
是剩余的天数,计入下一个完整的周。请参阅持续时间的组件中的“一阶 DURATION
组件”表和“二阶 DURATION
组件”表。
DURATION
值的一阶基于秒的组件WITH duration({
years: 1, months:1, days:1, hours: 1,
minutes: 1, seconds: 1, nanoseconds: 111111111
}) AS d
RETURN d.hours, d.minutes, d.seconds, d.milliseconds, d.microseconds, d.nanoseconds
d.hours | d.minutes | d.seconds | d.milliseconds | d.microseconds | d.nanoseconds |
---|---|---|---|---|---|
|
|
|
|
|
|
行数:1 |
d.minutes
是小时的 60 分钟和查询中的 1 分钟之和,因为 duration.hours
和 duration.minutes
都是基于秒的组件。类似地,d.seconds
、d.milliseconds
、d.microseconds
和 d.nanoseconds
是查询中相关基于秒的组件的总和值。
d.hours
不考虑查询中的天数,因为 duration.days
是一个基于天的组件。
请参阅持续时间的组件中的“一阶 DURATION
组件”表。
DURATION
值的二阶基于秒的组件WITH duration({
years: 1, months:1, days:1,
hours: 1, minutes: 1, seconds: 1, nanoseconds: 111111111
}) AS d
RETURN d.minutesOfHour, d.secondsOfMinute, d.millisecondsOfSecond, d.microsecondsOfSecond, d.nanosecondsOfSecond
d.minutesOfHour | d.secondsOfMinute | d.millisecondsOfSecond | d.microsecondsOfSecond | d.nanosecondsOfSecond |
---|---|---|---|---|
|
|
|
|
|
行数:1 |
返回的值都分别计入下一个完整的小时、分钟或秒。例如,d.microsecondsOfSecond
的值为 111111
,因为它是查询中 111111111
纳秒的微秒数(向下取整),但它不是一个完整的秒。
请参阅持续时间的组件中的“二阶 DURATION
组件”表。
1.5
天的持续时间RETURN duration({days: 1, hours: 12}) AS theDuration
theDuration |
---|
|
行数:1 |
DURATION
RETURN duration.between(date('1984-10-11'), date('2015-06-24')) AS theDuration
theDuration |
---|
|
行数:1 |
DATE
值之间的天数RETURN duration.inDays(date('2014-10-11'), date('2015-08-06')) AS theDuration
theDuration |
---|
|
行数:1 |
DATE
RETURN date.truncate('month', date() + duration('P2M')) - duration('P1D') AS lastDay
lastDay |
---|
|
行数:1 |
DURATION
添加到 DATE
RETURN time('13:42:19') + duration({days: 1, hours: 12}) AS theTime
theTime |
---|
|
行数:1 |
DURATION
值RETURN duration({days: 2, hours: 7}) + duration({months: 1, hours: 18}) AS theDuration
theDuration |
---|
|
行数:1 |
DURATION
乘以一个数字RETURN duration({hours: 5, minutes: 21}) * 14 AS theDuration
theDuration |
---|
|
行数:1 |
DURATION
除以一个数字RETURN duration({hours: 3, minutes: 16}) / 2 AS theDuration
theDuration |
---|
|
行数:1 |
WITH
datetime('2015-07-21T21:40:32.142+0100') AS date1,
datetime('2015-07-21T17:12:56.333+0100') AS date2
RETURN
CASE
WHEN date1 < date2 THEN date1 + duration("P1D") > date2
ELSE date2 + duration("P1D") > date1
END AS lessThanOneDayApart
lessThanOneDayApart |
---|
|
行数:1 |
RETURN ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][date().month-1] AS month
month |
---|
|
行数:1 |