瞬时类型函数
时间函数允许为每种时间类型创建和操作值——DATE(日期)、ZONED TIME(带时区时间)、LOCAL TIME(本地时间)、ZONED DATETIME(带时区日期时间)和 LOCAL DATETIME(本地日期时间)。
本页面包含以下函数
DATE |
ZONED DATETIME |
LOCAL DATETIME |
LOCAL TIME |
ZONED TIME |
|---|---|---|---|---|
|
另请参阅 时间(日期/时间)值 和 时间运算符。 |
时间瞬时类型
时间瞬时类型创建概览
每个函数都与对应的类型同名,并以以下四种方式之一构造其对应的类型
-
获取当前时间。
-
组合该类型的组件。
-
解析时间值的
STRING(字符串)表示形式。 -
通过以下方式从另一个时间值中选择并组合组件:
-
要么结合时间值(例如,结合
DATE和ZONED TIME以创建ZONED DATETIME),要么 -
从时间值中选择部分(例如,从
ZONED DATETIME中选择DATE);提取器(可以被选择的组件组)为:-
date— 包含DATE的所有组件(概念上为年、月和日)。 -
time— 包含ZONED TIME的所有组件(时、分、秒和子秒;即毫秒、微秒和纳秒)。如果被创建的类型和提取时间组件的源类型都包含timezone(且未明确指定timezone),则timezone也会被选择。 -
datetime— 选择所有组件,适用于重写特定组件。与time类似,如果被创建的类型和提取时间组件的源类型都包含timezone(且未明确指定timezone),则timezone也会被选择。
-
-
实际上,这允许在不同时间类型之间进行转换,并允许指定“缺失”的组件。
-
| 函数 | DATE |
ZONED TIME |
LOCAL TIME |
ZONED DATETIME |
LOCAL DATETIME |
|---|---|---|---|---|---|
获取当前值。 |
|||||
创建基于日历(年-月-日)的值。 |
|||||
创建基于周(年-周-日)的值。 |
|||||
创建基于季度(年-季度-日)的值。 |
|||||
创建序数值(年-天)的值。 |
|||||
通过时间组件创建值。 |
|||||
使用提取器从其他时间值创建值(即在不同类型间转换)。 |
|||||
从 |
|||||
从时间戳创建值。 |
|
所有时间瞬时类型——包括那些不包含时区信息支持的类型,如 |
控制使用的时钟
基于当前瞬时创建时间瞬时值的函数默认使用 statement 时钟。但是,有三种不同的时钟可用于更精细的控制:
-
transaction:同一事务内的每次调用都会产生相同的瞬时值。不同事务可能产生不同的时间。 -
statement:同一语句内的每次调用都会产生相同的瞬时值。同一事务内的不同语句可能产生不同的时间。 -
realtime:产生的瞬时值将是系统的实时时钟。
下表列出了在创建当前时间瞬时值时用于指定所用时钟的不同子函数
| 类型 | 默认 | transaction | statement | realtime |
|---|---|---|---|---|
Date |
||||
Time |
||||
LocalTime |
||||
DateTime |
||||
LocalDateTime |
截断时间值
可以通过在指定的组件边界(即截断单位)处截断另一个时间瞬时值来创建时间瞬时值。以这种方式创建的时间瞬时值,所有小于指定截断单位的组件都将被设置为其默认值。
可以通过提供包含小于截断单位的组件的映射来补充被截断的值。这会覆盖本应为这些较小组件设置的默认值。
下表列出了支持的截断单位及相应的子函数
| 截断单位 | DATE |
ZONED TIME |
LOCAL TIME |
ZONED DATETIME |
LOCAL DATETIME |
|---|---|---|---|---|---|
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
date()
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以是时间值的字符串表示、包含键“timezone”的映射,或包含时间值组件('date', 'year', 'month', 'day', 'week', 'dayOfWeek', 'quarter', 'dayOfQuarter', 'ordinalDay')的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
| 名称 | 描述 |
|---|---|
|
一个 |
|
由至少四位数字组成的年份表达式。 |
|
1 到 12 之间的整数,指定月份。 |
|
1 到 31 之间的整数,指定月份中的日期。 |
|
1 到 53 之间的整数,指定周数。 |
|
1 到 7 之间的整数,指定星期几。 |
|
1 到 4 之间的整数,指定季度。 |
|
1 到 92 之间的整数,指定季度中的日期。 |
|
1 到 366 之间的整数,指定一年中的序数日。 |
如果不提供参数,必须调用 |
如果未指定时区,将使用本地时区。 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
时间值的字符串表示必须符合日期定义的格式。 |
时间值的字符串表示必须表示有效的日期;例如,表示 |
|
如果提供了任何可选参数,这些参数将覆盖 |
可以使用 |
|
RETURN date() AS currentDate
返回当前日期。
| currentDate |
|---|
|
行:1 |
RETURN date({timezone: 'America/Los Angeles'}) AS currentDateInLA
返回加利福尼亚的当前日期。
| currentDateInLA |
|---|
|
行:1 |
创建 DATE 值
DATEUNWIND [
date({year: 1984, month: 10, day: 11}),
date({year: 1984, month: 10}),
date({year: 1984})
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
行:3 |
DATEUNWIND [
date({year: 1984, week: 10, dayOfWeek: 3}),
date({year: 1984, week: 10}),
date({year: 1984})
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
行:3 |
DATEUNWIND [
date({year: 1984, quarter: 3, dayOfQuarter: 45}),
date({year: 1984, quarter: 3}),
date({year: 1984})
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
行:3 |
DATEUNWIND [
date({year: 1984, ordinalDay: 202}),
date({year: 1984})
] AS theDate
RETURN theDate
返回对应于 1984年2月11日 的日期。
| theDate |
|---|
|
|
行:2 |
DATEUNWIND [
date({year: 1984, month: 11, day: 11}),
localdatetime({year: 1984, month: 11, day: 11, hour: 12, minute: 31, second: 14}),
datetime({year: 1984, month: 11, day: 11, hour: 12, timezone: '+01:00'})
] AS dd
RETURN date({date: dd}) AS dateOnly, date({date: dd, day: 28}) AS dateDay
| dateOnly | +dateDay |
|---|---|
|
|
|
|
|
|
行:3 |
|
STRING 创建 DATEUNWIND [
date('2015-07-21'),
date('2015-07'),
date('201507'),
date('2015-W30-2'),
date('2015202'),
date('2015'),
date('11/18/1986', "MM/dd/yyyy")
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
|
|
|
|
行:7 |
date.realtime()
语法 |
|
||
描述 |
使用实时时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 DATE 将是系统的实时时钟。
RETURN date.realtime() AS currentDate
| currentDate |
|---|
|
行:1 |
RETURN date.realtime('America/Los Angeles') AS currentDateInLA
| currentDateInLA |
|---|
|
行:1 |
date.statement()
语法 |
|
||
描述 |
使用语句时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 DATE 在同一语句中的每次调用中都是相同的。但是,同一事务内的不同语句可能会产生不同的值。
RETURN date.statement() AS currentDate
| currentDate |
|---|
|
行:1 |
date.transaction()
语法 |
|
||
描述 |
使用事务时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 DATE 在同一事务中的每次调用中都是相同的。但是,不同的事务可能会产生不同的值。
RETURN date.transaction() AS currentDate
| currentDate |
|---|
|
行:1 |
date.truncate()
语法 |
|
||
描述 |
使用指定的单位将给定的时间值截断为 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示以下之一的字符串:'day', 'week', 'month', 'weekYear', 'quarter', 'year', 'decade', 'century', 'millennium'。 |
|
|
|
要使用 |
|
|
|
在截断期间需要保留的小于 |
|
返回 |
|
||
date.truncate() 返回通过在指定的时间组件边界(由作为参数传递给函数的截断单位表示)处截断指定的时间瞬时值而获得的 DATE 值。换句话说,返回的 DATE 中所有小于指定截断单位的组件都将被设置为其默认值。
可以通过提供包含小于截断单位的组件的映射来补充被截断的值。这会产生覆盖本应为这些较小组件设置的默认值的效果。例如,当截断单位 STRING 为 'year' 时,可以提供 day(带有某个值 x),以确保返回的值将 day 设置为 x 而不是默认的 day(即 1)。
|
任何未包含在 |
如果未提供 |
如果未提供 |
WITH
datetime({
year: 2017, month: 11, day: 11,
hour: 12, minute: 31, second: 14, nanosecond: 645876123,
timezone: '+01:00'
}) AS d
RETURN
date.truncate('millennium', d) AS truncMillenium,
date.truncate('century', d) AS truncCentury,
date.truncate('decade', d) AS truncDecade,
date.truncate('year', d, {day: 5}) AS truncYear,
date.truncate('weekYear', d) AS truncWeekYear,
date.truncate('quarter', d) AS truncQuarter,
date.truncate('month', d) AS truncMonth,
date.truncate('week', d, {dayOfWeek: 2}) AS truncWeek,
date.truncate('day', d) AS truncDay
| truncMillenium | truncCentury | truncDecade | truncYear | truncWeekYear | truncQuarter | truncMonth | truncWeek | truncDay |
|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
行:1 |
||||||||
datetime()
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以是时间值的字符串表示、包含键“timezone”的映射,或包含时间值组件('year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond', 'microsecond', 'nanosecond', 'timezone')的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
| 名称 | 描述 |
|---|---|
|
由至少四位数字组成的年份表达式。 |
|
1 到 12 之间的整数,指定月份。 |
|
1 到 31 之间的整数,指定月份中的日期。 |
|
0 到 23 之间的整数,指定一天中的小时。 |
|
0 到 59 之间的整数,指定分钟数。 |
|
0 到 59 之间的整数,指定秒数。 |
|
0 到 999 之间的整数,指定毫秒数。 |
|
0 到 999,999 之间的整数,指定微秒数。 |
|
0 到 999,999,999 之间的整数,指定纳秒数。 |
|
指定时区的表达式。 |
|
表示 UTC 时区中 UNIX 纪元秒数的数值。 |
|
表示 UTC 时区中 UNIX 纪元毫秒数的数值。 |
如果不提供参数,必须调用 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
任何缺失的 |
如果省略 |
如果组合提供了 |
|
仅当同时指定了 |
时间值的字符串表示必须表示有效的日期;例如,表示 |
如果提供了任何可选参数,这些参数将覆盖 |
可以使用 |
选择 |
将 |
将 |
|
|
|
RETURN datetime() AS currentDateTime
返回使用本地时区的当前日期和时间。
| currentDateTime |
|---|
|
行:1 |
RETURN datetime({timezone: 'America/Los Angeles'}) AS currentDateTimeInLA
返回加利福尼亚的当前日期和时间。
| currentDateTimeInLA |
|---|
|
行:1 |
创建 ZONED DATETIME 值
ZONED DATETIMEUNWIND [
datetime({year: 1984, month: 10, day: 11, hour: 12, minute: 31, second: 14, millisecond: 123, microsecond: 456, nanosecond: 789}),
datetime({year: 1984, month: 10, day: 11, hour: 12, minute: 31, second: 14, millisecond: 645, timezone: '+01:00'}),
datetime({year: 1984, month: 10, day: 11, hour: 12, minute: 31, second: 14, nanosecond: 645876123, timezone: 'Europe/Stockholm'}),
datetime({year: 1984, month: 10, day: 11, hour: 12, minute: 31, second: 14, timezone: '+01:00'}),
datetime({year: 1984, month: 10, day: 11, hour: 12, minute: 31, second: 14}),
datetime({year: 1984, month: 10, day: 11, hour: 12, minute: 31, timezone: 'Europe/Stockholm'}),
datetime({year: 1984, month: 10, day: 11, hour: 12, timezone: '+01:00'}),
datetime({year: 1984, month: 10, day: 11, timezone: 'Europe/Stockholm'})
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
|
|
|
|
|
行:8 |
ZONED DATETIMEUNWIND [
datetime({year: 1984, week: 10, dayOfWeek: 3, hour: 12, minute: 31, second: 14, millisecond: 645}),
datetime({year: 1984, week: 10, dayOfWeek: 3, hour: 12, minute: 31, second: 14, microsecond: 645876, timezone: '+01:00'}),
datetime({year: 1984, week: 10, dayOfWeek: 3, hour: 12, minute: 31, second: 14, nanosecond: 645876123, timezone: 'Europe/Stockholm'}),
datetime({year: 1984, week: 10, dayOfWeek: 3, hour: 12, minute: 31, second: 14, timezone: 'Europe/Stockholm'}),
datetime({year: 1984, week: 10, dayOfWeek: 3, hour: 12, minute: 31, second: 14}),
datetime({year: 1984, week: 10, dayOfWeek: 3, hour: 12, timezone: '+01:00'}),
datetime({year: 1984, week: 10, dayOfWeek: 3, timezone: 'Europe/Stockholm'})
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
|
|
|
|
行:7 |
ZONED DATETIMEUNWIND [
datetime({year: 1984, quarter: 3, dayOfQuarter: 45, hour: 12, minute: 31, second: 14, microsecond: 645876}),
datetime({year: 1984, quarter: 3, dayOfQuarter: 45, hour: 12, minute: 31, second: 14, timezone: '+01:00'}),
datetime({year: 1984, quarter: 3, dayOfQuarter: 45, hour: 12, timezone: 'Europe/Stockholm'}),
datetime({year: 1984, quarter: 3, dayOfQuarter: 45})
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
|
行:4 |
ZONED DATETIMEUNWIND [
datetime({year: 1984, ordinalDay: 202, hour: 12, minute: 31, second: 14, millisecond: 645}),
datetime({year: 1984, ordinalDay: 202, hour: 12, minute: 31, second: 14, timezone: '+01:00'}),
datetime({year: 1984, ordinalDay: 202, timezone: 'Europe/Stockholm'}),
datetime({year: 1984, ordinalDay: 202})
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
|
行:4 |
STRING 创建 ZONED DATETIMEUNWIND [
datetime('2015-07-21T21:40:32.142+0100'),
datetime('2015-W30-2T214032.142Z'),
datetime('2015T214032-0100'),
datetime('20150721T21:40-01:30'),
datetime('2015-W30T2140-02'),
datetime('2015202T21+18:00'),
datetime('2015-07-21T21:40:32.142[Europe/London]'),
datetime('2015-07-21T21:40:32.142-04[America/New_York]'),
datetime('Tuesday, November 18, AD 1986', 'EEEE, MMMM d, G uuuu')
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
|
|
|
|
|
|
行:9 |
ZONED DATETIME以下查询显示了 datetime({date [, year, ..., timezone]}) 的各种用法。
WITH date({year: 1984, month: 10, day: 11}) AS dd
RETURN
datetime({date: dd, hour: 10, minute: 10, second: 10}) AS dateHHMMSS,
datetime({date: dd, hour: 10, minute: 10, second: 10, timezone:'+05:00'}) AS dateHHMMSSTimezone,
datetime({date: dd, day: 28, hour: 10, minute: 10, second: 10}) AS dateDDHHMMSS,
datetime({date: dd, day: 28, hour: 10, minute: 10, second: 10, timezone:'Pacific/Honolulu'}) AS dateDDHHMMSSTimezone
| dateHHMMSS | dateHHMMSSTimezone | dateDDHHMMSS | dateDDHHMMSSTimezone |
|---|---|---|---|
|
|
|
|
行:1 |
|||
ZONED DATETIME以下查询显示了 datetime({time [, year, …, timezone]}) 的各种用法。
WITH time({hour: 12, minute: 31, second: 14, microsecond: 645876, timezone: '+01:00'}) AS tt
RETURN
datetime({year: 1984, month: 10, day: 11, time: tt}) AS YYYYMMDDTime,
datetime({year: 1984, month: 10, day: 11, time: tt, timezone:'+05:00'}) AS YYYYMMDDTimeTimezone,
datetime({year: 1984, month: 10, day: 11, time: tt, second: 42}) AS YYYYMMDDTimeSS,
datetime({year: 1984, month: 10, day: 11, time: tt, second: 42, timezone: 'Pacific/Honolulu'}) AS YYYYMMDDTimeSSTimezone
| YYYYMMDDTime | +YYYYMMDDTimeTimezone | YYYYMMDDTimeSS | YYYYMMDDTimeSSTimezone |
|---|---|---|---|
|
|
|
|
行:1 |
|||
ZONED DATETIME以下查询显示了 datetime({date, time [, year, ..., timezone]}) 的各种用法;即结合 DATE 和 ZONED TIME 值以创建一个 ZONED DATETIME 值。
WITH
date({year: 1984, month: 10, day: 11}) AS dd,
localtime({hour: 12, minute: 31, second: 14, millisecond: 645}) AS tt
RETURN
datetime({date: dd, time: tt}) AS dateTime,
datetime({date: dd, time: tt, timezone: '+05:00'}) AS dateTimeTimezone,
datetime({date: dd, time: tt, day: 28, second: 42}) AS dateTimeDDSS,
datetime({date: dd, time: tt, day: 28, second: 42, timezone: 'Pacific/Honolulu'}) AS dateTimeDDSSTimezone
| dateTime | dateTimeTimezone | dateTimeDDSS | dateTimeDDSSTimezone |
|---|---|---|---|
|
|
|
|
行:1 |
|||
ZONED DATETIME以下查询显示了 datetime({datetime [, year, ..., timezone]}) 的各种用法。
WITH
datetime({
year: 1984, month: 10, day: 11,
hour: 12,
timezone: 'Europe/Stockholm'
}) AS dd
RETURN
datetime({datetime: dd}) AS dateTime,
datetime({datetime: dd, timezone: '+05:00'}) AS dateTimeTimezone,
datetime({datetime: dd, day: 28, second: 42}) AS dateTimeDDSS,
datetime({datetime: dd, day: 28, second: 42, timezone: 'Pacific/Honolulu'}) AS dateTimeDDSSTimezone
| dateTime | dateTimeTimezone | dateTimeDDSS | dateTimeDDSSTimezone |
|---|---|---|---|
|
|
|
|
行:1 |
|||
epocSeconds) 创建 ZONED DATETIMEdatetime() 返回 UTC 时区中 UNIX 纪元之后的指定秒数或毫秒数对应的 ZONED DATETIME 值。
通过将 ZONED DATETIME 值转换为这些类型,可以实现从 UNIX 纪元表示形式到其他时间瞬时类型的转换。
RETURN datetime({epochSeconds: timestamp() / 1000, nanosecond: 23}) AS theDate
| theDate |
|---|
|
行:1 |
epocMillis) 创建 ZONED DATETIMERETURN datetime({epochMillis: 424797300000}) AS theDate
| theDate |
|---|
|
行:1 |
zoned_datetime()仅限 Cypher 25在 Neo4j 2026.02 中引入
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
时间值或包含时间组件的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
此函数是 datetime() 函数的别名,它是作为 Cypher® GQL 一致性的一部分引入的。有关支持的组件和解析行为的详细信息,请参阅 datetime()。
在 GQL 中,无效的日期时间(或时区)字段名称集会引发数据异常 (22G05);Cypher 使用同等严重程度的错误 (22007/22N12)。Cypher 还允许使用可选的 pattern 参数进行解析;此别名也支持它。GQL 关键字 CURRENT_TIMESTAMP 没有在 Cypher 中作为保留关键字引入,因为这会破坏现有的使用该名称作为变量的查询。
RETURN zoned_datetime('2022-06-14T10:02:30Z') AS theDateTime
| theDateTime |
|---|
|
行:1 |
datetime.fromEpoch()
语法 |
|
||
描述 |
给定纪元开始后的秒数和纳秒数,创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
UTC 时区中 UNIX 纪元后的秒数。 |
|
|
|
UTC 时区中 UNIX 纪元后的纳秒数。这可以加到秒数中。 |
|
返回 |
|
||
WITH datetime.fromEpoch(1683000000, 123456789) AS dateTimeFromEpoch
RETURN dateTimeFromEpoch
| dateTimeFromEpoch |
|---|
|
行:1 |
datetime.fromEpochMillis()
语法 |
|
||
描述 |
给定纪元开始后的毫秒数,创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
UTC 时区中 UNIX 纪元后的毫秒数。 |
|
返回 |
|
||
WITH datetime.fromEpochMillis(1724198400000) AS dateTimeFromMillis
RETURN dateTimeFromMillis
| dateTimeFromMillis |
|---|
|
行:1 |
datetime.realtime()
语法 |
|
||
描述 |
使用实时时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 ZONED DATETIME 将是系统的实时时钟。
RETURN datetime.realtime() AS currentDateTime
| currentDateTime |
|---|
|
行:1 |
datetime.statement()
语法 |
|
||
描述 |
使用语句时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
此返回的 ZONED DATETIME 在同一语句中的每次调用中都是相同的。但是,同一事务内的不同语句可能会产生不同的值。
RETURN datetime.statement() AS currentDateTime
| currentDateTime |
|---|
|
行:1 |
datetime.transaction()
语法 |
|
||
描述 |
使用事务时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 ZONED DATETIME 值在同一事务中的每次调用中都是相同的。但是,不同的事务可能会产生不同的值。
RETURN datetime.transaction() AS currentDateTime
| currentDateTime |
|---|
|
行:1 |
RETURN datetime.transaction('America/Los Angeles') AS currentDateTimeInLA
| currentDateTimeInLA |
|---|
|
行:1 |
datetime.truncate()
语法 |
|
||
描述 |
使用指定的单位将给定的时间值截断为 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示以下之一的字符串:'microsecond', 'millisecond', 'second', 'minute', 'hour', 'day', 'week', 'month', 'weekYear', 'quarter', 'year', 'decade', 'century', 'millennium'。 |
|
|
|
要使用 |
|
|
|
在截断期间需要保留的小于 |
|
返回 |
|
||
datetime.truncate() 返回通过在指定的时间组件边界(由作为参数传递给函数的截断单位表示)处截断指定的时间瞬时值而获得的 ZONED DATETIME 值。换句话说,返回的 ZONED DATETIME 中所有小于指定截断单位的组件都将被设置为其默认值。
可以通过提供包含小于截断单位的组件的映射来补充被截断的值。这会产生覆盖本应为这些较小组件设置的默认值的效果。例如,当截断单位 STRING 为 'year' 时,可以提供 day(带有某个值 x),以确保返回的值将 day 设置为 x 而不是默认的 day(即 1)。
如果 |
|
如果 |
如果 |
|
任何未包含在 |
如果未提供 |
如果未提供 |
WITH
datetime({
year:2017, month:11, day:11,
hour:12, minute:31, second:14, nanosecond: 645876123,
timezone: '+03:00'
}) AS d
RETURN
datetime.truncate('millennium', d, {timezone: 'Europe/Stockholm'}) AS truncMillenium,
datetime.truncate('year', d, {day: 5}) AS truncYear,
datetime.truncate('month', d) AS truncMonth,
datetime.truncate('day', d, {millisecond: 2}) AS truncDay,
datetime.truncate('hour', d) AS truncHour,
datetime.truncate('second', d) AS truncSecond
| truncMillenium | truncYear | truncMonth | truncDay | truncHour | truncSecond |
|---|---|---|---|---|---|
|
|
|
|
|
|
行:1 |
|||||
localdatetime()
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以是时间值的字符串表示、包含键“timezone”的映射,或包含时间值组件('year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond', 'microsecond', 'nanosecond')的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
| 名称 | 描述 |
|---|---|
|
|
|
由至少四位数字组成的年份表达式。 |
|
1 到 12 之间的整数,指定月份。 |
|
1 到 31 之间的整数,指定月份中的日期。 |
|
0 到 23 之间的整数,指定一天中的小时。 |
|
0 到 59 之间的整数,指定分钟数。 |
|
0 到 59 之间的整数,指定秒数。 |
|
0 到 999 之间的整数,指定毫秒数。 |
|
0 到 999,999 之间的整数,指定微秒数。 |
|
0 到 999,999,999 之间的整数,指定纳秒数。 |
如果不提供参数,必须调用 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
如果省略 |
任何缺失的 |
如果组合提供了 |
|
仅当同时指定了 |
时间值的字符串表示必须表示有效的日期;例如,表示 |
|
如果提供了任何可选参数,这些参数将覆盖 |
可以使用 |
|
RETURN localdatetime() AS now
返回当前的本地日期和时间(即在本地时区)。
| now |
|---|
|
行:1 |
RETURN localdatetime({timezone: 'America/Los Angeles'}) AS now
返回加利福尼亚的当前本地日期和时间。
| now |
|---|
|
行:1 |
创建 LOCAL DATETIME 值
LOCAL DATETIMERETURN
localdatetime({
year: 1984, month: 10, day: 11,
hour: 12, minute: 31, second: 14, millisecond: 123, microsecond: 456, nanosecond: 789
}) AS theDate
| theDate |
|---|
|
行:1 |
LOCAL DATETIMERETURN
localdatetime({
year: 1984, week: 10, dayOfWeek: 3,
hour: 12, minute: 31, second: 14, millisecond: 645
}) AS theDate
| theDate |
|---|
|
行:1 |
ZONED DATETIMERETURN
localdatetime({
year: 1984, quarter: 3, dayOfQuarter: 45,
hour: 12, minute: 31, second: 14, nanosecond: 645876123
}) AS theDate
| theDate |
|---|
|
行:1 |
LOCAL DATETIMERETURN
localdatetime({
year: 1984, ordinalDay: 202,
hour: 12, minute: 31, second: 14, microsecond: 645876
}) AS theDate
| theDate |
|---|
|
行:1 |
STRING 创建 LOCAL DATETIMEUNWIND [
localdatetime('2015-07-21T21:40:32.142'),
localdatetime('2015-W30-2T214032.142'),
localdatetime('2015-202T21:40:32'),
localdatetime('2015202T21'),
localdatetime('Tuesday, November 18, AD 1986', 'EEEE, MMMM d, G uuuu')
] AS theDate
RETURN theDate
| theDate |
|---|
|
|
|
|
|
行:5 |
LOCAL DATETIME以下查询显示了 localdatetime({date [, year, ..., nanosecond]}) 的各种用法。
WITH date({year: 1984, month: 10, day: 11}) AS dd
RETURN
localdatetime({date: dd, hour: 10, minute: 10, second: 10}) AS dateHHMMSS,
localdatetime({date: dd, day: 28, hour: 10, minute: 10, second: 10}) AS dateDDHHMMSS
| dateHHMMSS | dateDDHHMMSS |
|---|---|
|
|
行:1 |
|
LOCAL DATETIME以下查询显示了 localdatetime({time [, year, ..., nanosecond]}) 的各种用法。
WITH time({hour: 12, minute: 31, second: 14, microsecond: 645876, timezone: '+01:00'}) AS tt
RETURN
localdatetime({year: 1984, month: 10, day: 11, time: tt}) AS YYYYMMDDTime,
localdatetime({year: 1984, month: 10, day: 11, time: tt, second: 42}) AS YYYYMMDDTimeSS
| YYYYMMDDTime | YYYYMMDDTimeSS |
|---|---|
|
|
行:1 |
|
LOCAL DATETIME以下查询显示了 localdatetime({date, time [, year, ..., nanosecond]}) 的各种用法;即结合 DATE 和 ZONED TIME 值以创建一个 LOCAL DATETIME 值。
WITH
date({year: 1984, month: 10, day: 11}) AS dd,
time({hour: 12, minute: 31, second: 14, microsecond: 645876, timezone: '+01:00'}) AS tt
RETURN
localdatetime({date: dd, time: tt}) AS dateTime,
localdatetime({date: dd, time: tt, day: 28, second: 42}) AS dateTimeDDSS
| dateTime | dateTimeDDSS |
|---|---|
|
|
行:1 |
|
LOCAL DATETIME以下查询显示了 localdatetime({datetime [, year, ..., nanosecond]}) 的各种用法。
WITH
datetime({
year: 1984, month: 10, day: 11,
hour: 12,
timezone: '+01:00'
}) AS dd
RETURN
localdatetime({datetime: dd}) AS dateTime,
localdatetime({datetime: dd, day: 28, second: 42}) AS dateTimeDDSS
| dateTime | dateTimeDDSS |
|---|---|
|
|
行:1 |
|
local_datetime()仅限 Cypher 25在 Neo4j 2026.02 中引入
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
时间值或包含时间组件的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
此函数是 localdatetime() 函数的别名,它是作为 Cypher GQL 一致性的一部分引入的。有关支持的组件和解析行为的详细信息,请参阅 localdatetime()。
在 GQL 中,无效的日期时间字段名称集会引发数据异常 (22G05);Cypher 使用同等严重程度的错误 (22007/22N12)。Cypher 还允许使用可选的 pattern 参数进行解析;此别名也支持它。GQL 关键字 LOCAL_TIMESTAMP 没有在 Cypher 中作为保留关键字引入,因为这会破坏现有的使用该名称作为变量的查询。
RETURN local_datetime('2015-07-21T21:40:32.142') AS theDateTime
| theDateTime |
|---|
|
行:1 |
localdatetime.realtime()
语法 |
|
||
描述 |
使用实时时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 LOCAL DATETIME 将是系统的实时时钟。
RETURN localdatetime.realtime() AS now
| now |
|---|
|
行:1 |
RETURN localdatetime.realtime('America/Los Angeles') AS nowInLA
| nowInLA |
|---|
|
行:1 |
localdatetime.statement()
语法 |
|
||
描述 |
使用语句时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
此返回的 LOCAL DATETIME 在同一语句中的每次调用中都是相同的。但是,同一事务内的不同语句可能会产生不同的值。
RETURN localdatetime.statement() AS now
| now |
|---|
|
行:1 |
localdatetime.transaction()
语法 |
|
||
描述 |
使用事务时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 LOCAL DATETIME 在同一事务中的每次调用中都是相同的。但是,不同的事务可能会产生不同的值。
RETURN localdatetime.transaction() AS now
| now |
|---|
|
行:1 |
localdatetime.truncate()
语法 |
|
||
描述 |
使用指定的单位将给定的时间值截断为 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示以下之一的字符串:'microsecond', 'millisecond', 'second', 'minute', 'hour', 'day', 'week', 'month', 'weekYear', 'quarter', 'year', 'decade', 'century', 'millennium'。 |
|
|
|
要使用 |
|
|
|
在截断期间需要保留的小于 |
|
返回 |
|
||
localdatetime.truncate() 返回通过在指定的时间组件边界(由作为参数传递给函数的截断单位表示)处截断指定的时间瞬时值而获得的 LOCAL DATETIME 值。换句话说,返回的 LOCAL DATETIME 中所有小于指定截断单位的组件都将被设置为其默认值。
可以通过提供包含小于截断单位的组件的映射来补充被截断的值。这会产生覆盖本应为这些较小组件设置的默认值的效果。例如,当截断单位 STRING 为 'year' 时,可以提供 day(带有某个值 x),以确保返回的值将 day 设置为 x 而不是默认的 day(即 1)。
如果 |
|
任何未包含在 |
如果未提供 |
如果未提供 |
WITH
localdatetime({
year: 2017, month: 11, day: 11,
hour: 12, minute: 31, second: 14, nanosecond: 645876123
}) AS d
RETURN
localdatetime.truncate('millennium', d) AS truncMillenium,
localdatetime.truncate('year', d, {day: 2}) AS truncYear,
localdatetime.truncate('month', d) AS truncMonth,
localdatetime.truncate('day', d) AS truncDay,
localdatetime.truncate('hour', d, {nanosecond: 2}) AS truncHour,
localdatetime.truncate('second', d) AS truncSecond
| truncMillenium | truncYear | truncMonth | truncDay | truncHour | truncSecond |
|---|---|---|---|---|---|
|
|
|
|
|
|
行:1 |
|||||
localtime()
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以是时间值的字符串表示、包含键“timezone”的映射,或包含时间值组件('hour', 'minute', 'second', 'millisecond', 'microsecond', 'nanosecond')的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
| 名称 | 描述 |
|---|---|
|
0 到 23 之间的整数,指定一天中的小时。 |
|
0 到 59 之间的整数,指定分钟数。 |
|
0 到 59 之间的整数,指定秒数。 |
|
0 到 999 之间的整数,指定毫秒数。 |
|
0 到 999,999 之间的整数,指定微秒数。 |
|
0 到 999,999,999 之间的整数,指定纳秒数。 |
如果不提供参数,必须调用 |
如果省略 |
如果省略 |
如果省略 |
任何缺失的 |
如果组合提供了 |
|
仅当同时指定了 |
时间值的字符串表示必须符合时间定义的格式。 |
时间值的字符串表示必须表示有效的时间;例如,表示 |
|
如果提供了任何可选参数,这些参数将覆盖 |
可以使用 |
|
RETURN localtime() AS now
返回当前的本地时间(即在本地时区)。
| now |
|---|
|
行:1 |
RETURN localtime({timezone: 'America/Los Angeles'}) AS nowInLA
返回加利福尼亚的当前本地时间。
| nowInLA |
|---|
|
行:1 |
创建 LOCAL TIME 值
UNWIND [
localtime({hour: 12, minute: 31, second: 14, nanosecond: 789, millisecond: 123, microsecond: 456}),
localtime({hour: 12, minute: 31, second: 14}),
localtime({hour: 12})
] AS theTime
RETURN theTime
| theTime |
|---|
|
|
|
行:3 |
STRING 创建 LOCAL TIMEUNWIND [
localtime('21:40:32.142'),
localtime('214032.142'),
localtime('21:40'),
localtime('21'),
localtime('6:04', 'k:mm')
] AS theTime
RETURN theTime
| theTime |
|---|
|
|
|
|
|
行:5 |
LOCAL TIMEWITH time({hour: 12, minute: 31, second: 14, microsecond: 645876, timezone: '+01:00'}) AS tt
RETURN
localtime({time: tt}) AS timeOnly,
localtime({time: tt, second: 42}) AS timeSS
| timeOnly | timeSS |
|---|---|
|
|
行:1 |
|
local_time()仅限 Cypher 25在 Neo4j 2026.02 中引入
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
时间值或包含时间组件的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
此函数是 localtime() 函数的别名,它是作为 Cypher GQL 一致性的一部分引入的。有关支持的组件和解析行为的详细信息,请参阅 localtime()。
在 GQL 中,无效的时间字段名称集会引发数据异常 (22G05);Cypher 使用同等严重程度的错误 (22007/22N12)。Cypher 还允许使用可选的 pattern 参数进行解析;此别名也支持它。GQL 关键字 LOCAL_TIME(无参数)没有在 Cypher 中作为保留关键字引入,因为这会破坏现有的使用 LOCAL_TIME 作为变量名的查询。
RETURN local_time('21:40:32.142') AS theTime
| theTime |
|---|
|
行:1 |
localtime.realtime()
语法 |
|
||
描述 |
使用实时时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 LOCAL TIME 将是系统的实时时钟。
RETURN localtime.realtime() AS now
| now |
|---|
|
行:1 |
localtime.statement()
语法 |
|
||
描述 |
使用语句时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
此返回的 LOCAL TIME 在同一语句中的每次调用中都是相同的。但是,同一事务内的不同语句可能会产生不同的值。
RETURN localtime.statement() AS now
| now |
|---|
|
行:1 |
RETURN localtime.statement('America/Los Angeles') AS nowInLA
| nowInLA |
|---|
|
行:1 |
localtime.transaction()
语法 |
|
||
描述 |
使用事务时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 LOCAL TIME 在同一事务中的每次调用中都是相同的。但是,不同的事务可能会产生不同的值。
RETURN localtime.transaction() AS now
| now |
|---|
|
行:1 |
localtime.truncate()
语法 |
|
||
描述 |
使用指定的单位将给定的时间值截断为 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示以下之一的字符串:'day', 'week', 'month', 'weekYear', 'quarter', 'year', 'decade', 'century', 'millennium'。 |
|
|
|
要使用 |
|
|
|
在截断期间需要保留的小于 |
|
返回 |
|
||
localtime.truncate() 返回通过在指定的时间组件边界(由作为参数传递给函数的截断单位表示)处截断指定的时间瞬时值而获得的 LOCAL TIME 值。换句话说,返回的 LOCAL TIME 中所有小于指定截断单位的组件都将被设置为其默认值。
可以通过提供包含小于截断单位的组件的映射来补充被截断的值。这会产生覆盖本应为这些较小组件设置的默认值的效果。例如,当截断单位字符串为 'hour' 时,可以提供 minute(带有某个值 x),以确保返回的值将 minute 设置为 x 而不是默认的 minute(即 1)。
支持将时间截断为天(即 |
|
任何未包含在 |
如果未提供 |
如果未提供 |
WITH time({hour: 12, minute: 31, second: 14, nanosecond: 645876123, timezone: '-01:00'}) AS t
RETURN
localtime.truncate('day', t) AS truncDay,
localtime.truncate('hour', t) AS truncHour,
localtime.truncate('minute', t, {millisecond: 2}) AS truncMinute,
localtime.truncate('second', t) AS truncSecond,
localtime.truncate('millisecond', t) AS truncMillisecond,
localtime.truncate('microsecond', t) AS truncMicrosecond
| truncDay | truncHour | truncMinute | truncSecond | truncMillisecond | truncMicrosecond |
|---|---|---|---|---|---|
|
|
|
|
|
|
行:1 |
|||||
time()
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以是时间值的字符串表示、包含键“timezone”的映射,或包含时间值组件('hour', 'minute', 'second', 'millisecond', 'microsecond', 'nanosecond', 'timezone')的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
| 名称 | 描述 |
|---|---|
|
0 到 23 之间的整数,指定一天中的小时。 |
|
0 到 59 之间的整数,指定分钟数。 |
|
0 到 59 之间的整数,指定秒数。 |
|
0 到 999 之间的整数,指定毫秒数。 |
|
0 到 999,999 之间的整数,指定微秒数。 |
|
0 到 999,999,999 之间的整数,指定纳秒数。 |
|
指定时区的表达式。 |
如果不提供参数,必须调用 |
如果省略 |
如果省略 |
如果省略 |
任何缺失的 |
如果省略 |
如果组合提供了 |
|
仅当同时指定了 |
如果省略 |
时间值的字符串表示必须表示有效的时间;例如,表示 |
|
如果提供了任何可选参数,这些参数将覆盖 |
可以使用 |
选择 |
将 |
|
RETURN time() AS currentTime
返回使用本地时区的当前时间。
| currentTime |
|---|
|
行:1 |
RETURN time({timezone: 'America/Los Angeles'}) AS currentTimeInLA
返回加利福尼亚的当前时间。
| currentTimeInLA |
|---|
|
行:1 |
创建 ZONED TIME 值
UNWIND [
time({hour: 12, minute: 31, second: 14, millisecond: 123, microsecond: 456, nanosecond: 789}),
time({hour: 12, minute: 31, second: 14, nanosecond: 645876123}),
time({hour: 12, minute: 31, second: 14, microsecond: 645876, timezone: '+01:00'}),
time({hour: 12, minute: 31, timezone: '+01:00'}),
time({hour: 12, timezone: '+01:00'})
] AS theTime
RETURN theTime
| theTime |
|---|
|
|
|
|
|
行:5 |
STRING 创建 ZONED TIMEUNWIND [
time('21:40:32.142+0100'),
time('214032.142Z'),
time('21:40:32+01:00'),
time('214032-0100'),
time('21:40-01:30'),
time('2140-00:00'),
time('2140-02'),
time('22+18:00'),
time('6:04', 'k:mm')
] AS theTime
RETURN theTime
| theTime |
|---|
|
|
|
|
|
|
|
|
|
行:9 |
ZONED TIMEWITH localtime({hour: 12, minute: 31, second: 14, microsecond: 645876}) AS tt
RETURN
time({time: tt}) AS timeOnly,
time({time: tt, timezone: '+05:00'}) AS timeTimezone,
time({time: tt, second: 42}) AS timeSS,
time({time: tt, second: 42, timezone: '+05:00'}) AS timeSSTimezone
| timeOnly | timeTimezone | timeSS | timeSSTimezone |
|---|---|---|---|
|
|
|
|
行:1 |
|||
zoned_time()仅限 Cypher 25在 Neo4j 2026.02 中引入
语法 |
|
||
描述 |
创建一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
时间值或包含时间组件的映射。 |
|
|
|
用于解析输入的模式。如果提供了模式,则 |
|
返回 |
|
||
在 GQL 中,无效的时间(或时区)字段名称集会引发数据异常 (22G05);Cypher 使用同等严重程度的错误 (22007/22N12)。Cypher 还允许使用可选的 pattern 参数进行解析;此别名也支持它。GQL 关键字 CURRENT_TIME 没有在 Cypher 中作为保留关键字引入,因为这会破坏现有的使用该名称作为变量的查询。
RETURN zoned_time('21:40:32.142+01:00') AS theTime
| theTime |
|---|
|
行:1 |
time.realtime()
语法 |
|
||
描述 |
使用实时时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 ZONED TIME 将是系统的实时时钟。
RETURN time.realtime() AS currentTime
| currentTime |
|---|
|
行:1 |
time.statement()
语法 |
|
||
描述 |
使用语句时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
此返回的 ZONED TIME 在同一语句中的每次调用中都是相同的。但是,同一事务内的不同语句可能会产生不同的值。
RETURN time.statement() AS currentTime
| currentTime |
|---|
|
行:1 |
RETURN time.statement('America/Los Angeles') AS currentTimeInLA
| currentTimeInLA |
|---|
|
行:1 |
time.transaction()
语法 |
|
||
描述 |
使用事务时钟返回当前的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示时区的字符串值。 |
|
返回 |
|
||
返回的 ZONED TIME 在同一事务中的每次调用中都是相同的。但是,不同的事务可能会产生不同的值。
RETURN time.transaction() AS currentTime
| currentTime |
|---|
|
行:1 |
time.truncate()
语法 |
|
||
描述 |
使用指定的单位将给定的时间值截断为 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示以下之一的字符串:'microsecond', 'millisecond', 'second', 'minute', 'hour', 'day'。 |
|
|
|
要使用 |
|
|
|
在截断期间需要保留的小于 |
|
返回 |
|
||
time.truncate() 返回通过在指定的时间组件边界(由作为参数传递给函数的截断单位表示)处截断指定的时间瞬时值而获得的 ZONED TIME 值。换句话说,返回的 ZONED TIME 中所有小于指定截断单位的组件都将被设置为其默认值。
可以通过提供包含小于截断单位的组件的映射来补充被截断的值。这会产生覆盖本应为这些较小组件设置的默认值的效果。例如,当截断单位 STRING 为 'hour' 时,可以提供 minute(带有某个值 x),以确保返回的值将 minute 设置为 x 而不是默认的 minute(即 1)。
支持将时间截断为天(即 |
|
如果 |
如果 |
|
任何未包含在 |
如果未提供 |
如果未提供 |
WITH time({hour: 12, minute: 31, second: 14, nanosecond: 645876123, timezone: '-01:00'}) AS t
RETURN
time.truncate('day', t) AS truncDay,
time.truncate('hour', t) AS truncHour,
time.truncate('minute', t) AS truncMinute,
time.truncate('second', t) AS truncSecond,
time.truncate('millisecond', t, {nanosecond: 2}) AS truncMillisecond,
time.truncate('microsecond', t) AS truncMicrosecond
| truncDay | truncHour | truncMinute | truncSecond | truncMillisecond | truncMicrosecond |
|---|---|---|---|---|---|
|
|
|
|
|
|
行:1 |
|||||