格式化函数
format()仅限 Cypher 25引入于 Neo4j 2025.09
format() 函数用于创建时间实例和持续时间类型的动态格式化字符串表示形式。
语法 |
|
||
描述 |
返回 ISO 格式的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
需要格式化的时间值。 |
|
|
|
用于格式化时间值的模式。如果未提供模式,则在大多数情况下,该值将根据 ISO 8601 进行格式化。 |
|
返回 |
|
||
输出格式可以通过 |
|
如果未指定模式,该函数将返回一个 ISO 格式的字符串,但有部分例外情况(Cypher® 的实现比 ISO 8601 更宽松),例如在使用带有时区的秒时。 |
大多数字符在重复时会产生不同的输出。 |
某些字符不能应用于特定类型,例如 |
除 |
实例类型
Cypher 的实例类型包括 DATE、LOCAL TIME、ZONED TIME、LOCAL DATETIME 和 ZONED DATETIME。更多信息,请参阅 值和类型 → 时间瞬间。
使用 字符串模式字符 中的字符来为实例类型创建字符串模式。
示例
WITH datetime('1986-11-18T6:04:45.123456789+01:00[Europe/Berlin]') AS dt
RETURN format(dt, "MM/dd/yyyy") AS US, format(dt, "dd/MM/yyyy") AS EU
| 美国格式 | 欧洲格式 |
|---|---|
|
|
行:1 |
|
WITH datetime('1986-11-18T6:04:45.123456789+01:00[Europe/Berlin]') AS dt
RETURN format(dt, "EEEE, MMMM d, G uuuu") AS instanceString
| instanceString |
|---|
|
行:1 |
四个 E 和 M(文本表示形式)会输出星期和月份的全称。
WITH datetime('1986-11-18T6:04:45.123456789+01:00[Europe/Berlin]') AS dt
RETURN format(dt, "DDD'nd day of the year,' c'rd day of the week'") AS instanceString
| instanceString |
|---|
|
行:1 |
WITH datetime('1986-11-18T6:04:45.123456789+01:00[Europe/Berlin]') AS dt
RETURN format(dt, "k:mm z") AS CET, format(dt, "K:mm O") AS GMT
| 中欧时间 (CET) | 格林威治标准时间 (GMT) |
|---|---|
|
|
行:1 |
|
WITH datetime('1986-11-18T6:04:45.123456789+01:00[Europe/Berlin]') AS dt
RETURN format(dt, "LLL d,' minute 'm', second 's', millisecond of the day 'A") AS instanceString
| instanceString |
|---|
|
行:1 |
三个 L(数字/文本表示形式)会输出简写形式("Nov")。
WITH datetime('1986-11-18T6:04:45.123456789+01:00[Europe/Berlin]') AS dt
RETURN format(dt, "pppYY") AS instanceString
| instanceString |
|---|
|
行:1 |
三个 p 字符为两个 Y 字符输出的两位数字形式添加了一个空格字符作为填充。
字符串模式字符
| 字符 | 含义 | 呈现形式 | 示例 |
|---|---|---|---|
|
纪元 |
文本 (text) |
AD; Anno Domini; A |
|
year |
year |
2004; 04 |
|
纪元年 |
year |
2004; 04 |
|
年内日期 |
数量 (number) |
189 |
|
月份 |
数字/文本 |
7; 07; Jul; July; J |
|
日期 |
数量 (number) |
10 |
|
修正儒略日 |
数量 (number) |
2451334 |
|
季度 |
数字/文本 |
3; 03; Q3; 3rd quarter |
|
周基年份 |
year |
1996; 96 |
|
周基年份的周 |
数量 (number) |
27 |
|
月内的周 |
数量 (number) |
4 |
|
星期几 |
文本 (text) |
Tue; Tuesday; T |
|
本地化星期几 |
数字/文本 |
2; 02; Tue; Tuesday; T |
|
月内对齐周 |
数量 (number) |
3 |
|
上午/下午 |
文本 (text) |
PM |
|
日内时段 |
文本 (text) |
在上午 |
|
12小时制小时 (1-12) |
数量 (number) |
12 |
|
12小时制小时 (0-11) |
数量 (number) |
0 |
|
24小时制小时 (1-24) |
数量 (number) |
24 |
|
24小时制小时 (0-23) |
数量 (number) |
0 |
|
分钟 |
数量 (number) |
30 |
|
秒 |
数量 (number) |
55 |
|
秒的分数 |
分数 |
978 |
|
日内毫秒 |
数量 (number) |
1234 |
|
秒内纳秒 |
数量 (number) |
987654321 |
|
日内纳秒 |
数量 (number) |
1234000000 |
|
时区 ID |
时区 ID |
America/Los_Angeles; Z; -08:30 |
|
通用时区名称 |
时区名称 |
Pacific Time; PT |
|
时区名称 |
时区名称 |
Pacific Standard Time; PST |
|
本地化时区偏移 |
偏移量 O |
GMT+8; GMT+08:00; UTC-08:00 |
|
时区偏移('Z' 代表零) |
偏移量 X |
Z; -08; -0830; -08:30; -083015; -08:30:15 |
|
时区偏移 |
偏移量 x |
+0000; -08; -0830; -08:30; -083015; -08:30:15 |
|
时区偏移 |
偏移量 Z |
+0000; -0800; -08:00 |
|
后续补齐 |
补齐修饰符 |
1 |
|
文本转义 |
delimiter |
|
|
单引号 |
字面值 |
持续时间类型
使用 字符串模式字符 中的字符来为持续时间类型创建字符串模式。
Cypher 的 DURATION 类型具有组件和组件组。更多信息,请参阅 值和类型 → 持续时间组件。
如果字符串模式包含某个组件组的字符,但不包含表示同一组中更长时间单位的字符,format() 会将较长的时间单位转换为所含字符表示的等效持续时间。例如,如果模式中存在 q(季度)但缺少 y(年),则 1 年会被转换为 4 个季度。这是因为如果没有参考点,就无法确定持续时间的具体细节。
示例
WITH duration({years: 1, months: 4}) AS d
RETURN format(d, "y 'years' q 'quarters' M 'months'") AS withYears, format(d, "q 'quarters' M 'months'") AS withoutYears
| withYears | withoutYears |
|---|---|
|
|
行:1 |
|
WITH duration({weeks: 3, days: 4}) AS d
RETURN format(d, "w 'weeks' d 'days'") AS withWeeks, format(d, "d 'days'") AS withoutWeeks
| withWeeks | withoutWeeks |
|---|---|
|
|
行:1 |
|
WITH duration({days: 4, hours: 5, minutes: 6, seconds: 7}) AS d
RETURN format(d, "h 'hours' m 'minutes'") AS withHours, format(d, "m 'minutes'") AS withoutHours
| withHours | withoutHours |
|---|---|
|
|
行:1 |
|
注意 4 天是如何无法转换为小时或分钟且不影响查询结果的。天与小时和分钟属于不同的组件组,请参阅 持续时间类型字符串模式的允许字符。