PostgreSQL 支持全部SQL日期和时间类型,如表 8.9所示。这些数据类型可用的操作在第 9.9 节中进行了描述。日期的计算遵循公历,即使是在该历法引入之前的年份(有关更多信息,请参阅第 B.6 节)。
表 8.9. 日期/时间类型
名称 | 存储大小 | 描述 | 最小值 | 最大值 | 分辨率 |
---|---|---|---|---|---|
timestamp [ ( |
8 字节 | 日期和时间(无时区) | 公元前 4713 年 | 公元 294276 年 | 1 微秒 |
timestamp [ ( |
8 字节 | 日期和时间(带时区) | 公元前 4713 年 | 公元 294276 年 | 1 微秒 |
date |
4 字节 | 日期(无时间) | 公元前 4713 年 | 公元 5874897 年 | 1 天 |
time [ ( |
8 字节 | 时间(无日期) | 00:00:00 | 24:00:00 | 1 微秒 |
time [ ( |
12 字节 | 时间(无日期,带时区) | 00:00:00+1559 | 24:00:00-1559 | 1 微秒 |
interval [ |
16 字节 | 时间间隔 | -178000000 年 | 178000000 年 | 1 微秒 |
SQL 标准要求仅写 timestamp
等同于 timestamp without time zone
,并且 PostgreSQL 遵循此行为。timestamptz
是 timestamp with time zone
的缩写;这是 PostgreSQL 的一个扩展。
time
、timestamp
和 interval
接受一个可选的精度值 p
,该值指定秒字段中保留的小数位数。默认情况下,精度没有显式限制。p
的允许范围是 0 到 6。
类型 interval
还有一个附加选项,即通过写入以下短语之一来限制存储字段的集合
YEAR MONTH DAY HOUR MINUTE SECOND YEAR TO MONTH DAY TO HOUR DAY TO MINUTE DAY TO SECOND HOUR TO MINUTE HOUR TO SECOND MINUTE TO SECOND
请注意,如果同时指定了 fields
和 p
,则 fields
必须包含 SECOND
,因为精度仅适用于秒。
类型 time with time zone
由 SQL 标准定义,但其定义表现出的特性使其用途可疑。在大多数情况下,date
、time
、timestamp without time zone
和 timestamp with time zone
的组合应该能提供任何应用程序所需的完整日期/时间功能。
日期和时间输入几乎可以用任何合理的格式接受,包括 ISO 8601、SQL-兼容、传统 POSTGRES 等。对于某些格式,日期输入中日、月、年的顺序可能存在歧义,并且支持指定这些字段的预期顺序。将 DateStyle 参数设置为 MDY
以选择月-日-年解释,设置为 DMY
以选择日-月-年解释,或设置为 YMD
以选择年-月-日解释。
PostgreSQL 在处理日期/时间输入时比SQL标准要求更灵活。有关日期/时间输入的精确解析规则以及识别的文本字段(包括月份、星期几和时区),请参阅附录 B。
请记住,任何日期或时间字面量输入都需要用单引号括起来,就像文本字符串一样。有关更多信息,请参阅第 4.1.2.7 节。SQL要求以下语法
type
[ (p
) ] 'value
'
其中 p
是可选的精度说明,表示秒字段中的小数位数。精度可以为 time
、timestamp
和 interval
类型指定,范围为 0 到 6。如果在常量说明中未指定精度,则默认为字面值本身的精度(但最多为 6 位)。
表 8.10 显示了 date
类型的一些可能输入。
表 8.10. 日期输入
示例: | 描述 |
---|---|
1999-01-08 | ISO 8601;任何模式下的 1 月 8 日(推荐格式) |
1999 年 1 月 8 日 | 在任何 datestyle 输入模式下都无歧义 |
1/8/1999 | MDY 模式下的 1 月 8 日;DMY 模式下的 8 月 1 日 |
1/18/1999 | MDY 模式下的 1 月 18 日;其他模式下拒绝 |
01/02/03 | MDY 模式下的 2003 年 1 月 2 日;DMY 模式下的 2003 年 2 月 1 日;YMD 模式下的 2001 年 2 月 3 日 |
1999-Jan-08 | 任何模式下的 1 月 8 日 |
Jan-08-1999 | 任何模式下的 1 月 8 日 |
08-Jan-1999 | 任何模式下的 1 月 8 日 |
99-Jan-08 | YMD 模式下的 1 月 8 日,否则报错 |
08-Jan-99 | 1 月 8 日,在 YMD 模式下报错 |
Jan-08-99 | 1 月 8 日,在 YMD 模式下报错 |
19990108 | ISO 8601;任何模式下的 1999 年 1 月 8 日 |
990108 | ISO 8601;任何模式下的 1999 年 1 月 8 日 |
1999.008 | 年份和一年中的第几天 |
J2451187 | 儒略日数 |
公元前 99 年 1 月 8 日 | 公元前 99 年 |
时间类型是 time [ (
和 p
) ] without time zonetime [ (
。p
) ] with time zonetime
本身等同于 time without time zone
。
这些类型有效输入的格式是时间后跟一个可选的时区。(参见表 8.11 和 表 8.12。)如果为 time without time zone
的输入指定了时区,它将被静默忽略。您也可以指定一个日期,但它将被忽略,除非您使用了一个涉及夏令时规则的时区名称,例如 America/New_York
。在这种情况下,指定日期是必需的,以便确定适用的是标准时间还是夏令时。相应的时区偏移量会记录在 time with time zone
值中并按存储的方式输出;它不会根据当前活动时区进行调整。
表 8.11. 时间输入
示例: | 描述 |
---|---|
04:05:06.789 |
ISO 8601 |
04:05:06 |
ISO 8601 |
04:05 |
ISO 8601 |
040506 |
ISO 8601 |
上午 04:05 |
与 04:05 相同;AM 不影响值 |
下午 04:05 |
与 16:05 相同;输入小时必须 <= 12 |
04:05:06.789-8 |
ISO 8601,时区为 UTC 偏移量 |
04:05:06-08:00 |
ISO 8601,时区为 UTC 偏移量 |
04:05-08:00 |
ISO 8601,时区为 UTC 偏移量 |
040506-08 |
ISO 8601,时区为 UTC 偏移量 |
040506+0730 |
ISO 8601,带小数小时时区的 UTC 偏移量 |
040506+07:30:00 |
指定到秒的 UTC 偏移量(ISO 8601 不允许) |
04:05:06 PST |
通过缩写指定时区 |
2003-04-12 04:05:06 America/New_York |
通过全名指定时区 |
表 8.12. 时区输入
示例: | 描述 |
---|---|
PST |
缩写(太平洋标准时间) |
America/New_York |
完整的时区名称 |
PST8PDT |
POSIX 风格时区规范 |
-8:00:00 |
PST 的 UTC 偏移量 |
-8:00 |
PST 的 UTC 偏移量(ISO 8601 扩展格式) |
-800 |
PST 的 UTC 偏移量(ISO 8601 基本格式) |
-8 |
PST 的 UTC 偏移量(ISO 8601 基本格式) |
zulu |
UTC 的军事缩写 |
z |
zulu 的简写(也在 ISO 8601 中) |
有关如何指定时区的信息,请参阅第 8.5.3 节。
时间戳类型的有效输入包括日期和时间的连接,后跟可选的时区,再后跟可选的 AD
或 BC
。(或者,AD
/BC
可以出现在时区之前,但这不推荐。)因此,
1999-01-08 04:05:06
和
1999-01-08 04:05:06 -8:00
是有效值,它们遵循ISO8601 标准。此外,通用格式
January 8 04:05:06 1999 PST
也受支持。
该SQL标准通过在时间后是否带 “+” 或 “-” 符号和时区偏移量来区分 timestamp without time zone
和 timestamp with time zone
字面量。因此,根据标准,
TIMESTAMP '2004-10-19 10:23:54'
是一个 timestamp without time zone
,而
TIMESTAMP '2004-10-19 10:23:54+02'
是一个 timestamp with time zone
。PostgreSQL 在确定其类型之前从不检查字面量字符串的内容,因此会将上述两者都视为 timestamp without time zone
。为了确保字面量被视为 timestamp with time zone
,请为其提供正确的显式类型
TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02'
对于已被确定为 timestamp without time zone
的值,PostgreSQL 会静默忽略任何时区指示。也就是说,结果值是从输入字符串中的日期/时间字段派生的,并且不会根据时区进行调整。
对于 timestamp with time zone
值,包含显式时区的输入字符串将使用该时区的相应偏移量转换为 UTC(世界协调时间)。如果输入字符串中没有指定时区,则假定它处于系统 TimeZone 参数指示的时区中,并使用 timezone
时区的偏移量转换为 UTC。无论哪种情况,值都将内部存储为 UTC,并且不会保留原始指定或假定的时区。
当 timestamp with time zone
值输出时,它总是从 UTC 转换为当前 timezone
时区,并在该时区中显示为本地时间。要查看另一个时区的时间,请更改 timezone
或使用 AT TIME ZONE
结构(参见第 9.9.4 节)。
timestamp without time zone
和 timestamp with time zone
之间的转换通常假定 timestamp without time zone
值应该以 timezone
本地时间来解释或提供。可以使用 AT TIME ZONE
为转换指定不同的时区。
PostgreSQL 支持几个特殊的日期/时间输入值以方便使用,如表 8.13 所示。infinity
和 -infinity
值在系统内部有特殊的表示,会原样显示;但其他值仅仅是符号缩写,在读取时会被转换为普通的日期/时间值。(特别是,now
和相关字符串一旦被读取就会转换为一个特定的时间值。)所有这些值在 SQL 命令中用作常量时都需要用单引号括起来。
表 8.13. 特殊日期/时间输入
输入字符串 | 有效类型 | 描述 |
---|---|---|
epoch |
date , timestamp |
1970-01-01 00:00:00+00(Unix 系统零时) |
infinity |
date , timestamp , interval |
晚于所有其他时间戳 |
-infinity |
date , timestamp , interval |
早于所有其他时间戳 |
now |
date , time , timestamp |
当前事务的开始时间 |
today |
date , timestamp |
今天的午夜(00:00 ) |
tomorrow |
date , timestamp |
明天的午夜(00:00 ) |
yesterday |
date , timestamp |
昨天的午夜(00:00 ) |
allballs |
time |
00:00:00.00 UTC |
以下SQL-兼容函数也可用于获取相应数据类型的当前时间值:CURRENT_DATE
, CURRENT_TIME
, CURRENT_TIMESTAMP
, LOCALTIME
, LOCALTIMESTAMP
。(参见第 9.9.5 节。)请注意,这些是 SQL 函数,在数据输入字符串中不被识别。
虽然输入字符串 now
、today
、tomorrow
和 yesterday
在交互式 SQL 命令中使用是没问题的,但当命令被保存以便稍后执行时(例如在准备语句、视图和函数定义中),它们可能会产生令人惊讶的行为。该字符串可能会被转换为一个特定的时间值,而该值在变得陈旧很久之后仍然被使用。在这些上下文中,应改为使用 SQL 函数之一。例如,CURRENT_DATE + 1
比 'tomorrow'::date
更安全。
日期/时间类型的输出格式可以设置为四种样式之一:ISO 8601、SQL(Ingres)、传统 POSTGRES(Unix date 格式)或德式。默认是ISO格式。(SQL标准要求使用 ISO 8601 格式。“SQL” 输出格式的名称是一个历史巧合。)表 8.14 展示了每种输出样式的示例。date
和 time
类型的输出通常仅是日期或时间部分,与给定的示例一致。但是,POSTGRES 样式以ISO格式输出仅日期值。
表 8.14. 日期/时间输出样式
样式规范 | 描述 | 示例: |
---|---|---|
ISO |
ISO 8601,SQL 标准 | 1997-12-17 07:37:16-08 |
SQL |
传统样式 | 1997 年 12 月 17 日 07:37:16.00 PST |
Postgres |
原始样式 | Wed Dec 17 07:37:16 1997 PST |
德文 |
区域样式 | 1997 年 12 月 17 日 07:37:16.00 PST |
ISO 8601 指定使用大写字母 T
来分隔日期和时间。PostgreSQL 在输入时接受该格式,但在输出时使用空格而不是 T
,如上所示。这是为了提高可读性,并与 RFC 3339 以及其他一些数据库系统保持一致。
在SQL和 POSTGRES 样式中,如果指定了 DMY 字段顺序,则日期在前,月份在后;否则,月份在前,日期在后。(关于此设置如何影响输入值的解释,请参阅第 8.5.1 节。)表 8.15 显示了示例。
表 8.15. 日期顺序约定
datestyle 设置 |
输入顺序 | 示例输出 |
---|---|---|
SQL, DMY |
日 /月 /年 |
1997 年 12 月 17 日 15:37:16.00 CET |
SQL, MDY |
月 /日 /年 |
1997 年 12 月 17 日 07:37:16.00 PST |
Postgres, DMY |
日 /月 /年 |
Wed 17 Dec 07:37:16 1997 PST |
在ISO样式中,时区始终显示为与 UTC 的带符号数字偏移量,正号用于格林威治以东的时区。如果偏移量是整小时,则显示为 hh
(仅小时),否则显示为 hh
:mm
(整分钟),否则显示为 hh
:mm
:ss
。(第三种情况在任何现代时区标准下都不可能出现,但在处理早于标准化时区采用的时间戳时可能会出现。)在其他日期样式中,如果当前区域有常用的字母缩写,则时区显示为字母缩写。否则,它显示为 ISO 8601 基本格式的带符号数字偏移量(hh
或 hhmm
)。这些样式中显示的字母缩写取自当前 TimeZone 运行时参数选择的 IANA 时区数据库条目;它们不受 timezone_abbreviations 设置的影响。
用户可以使用 SET datestyle
命令、postgresql.conf
配置文件中的 DateStyle 参数,或服务器或客户端上的 PGDATESTYLE
环境变量来选择日期/时间样式。
格式化函数 to_char
(参见第 9.8 节)也可作为更灵活的日期/时间输出格式化方法。
时区和时区约定受到政治决策的影响,而不仅仅是地球几何。PostgreSQL 使用广泛使用的 IANA(Olson)时区数据库来获取历史时区规则信息。对于未来的时间,假定给定时区的最新已知规则将无限期地继续遵守。
PostgreSQL 致力于与SQL典型用法的标准定义兼容。然而,SQL标准包含混合了日期和时间类型以及功能。两个明显的问题是
虽然 date
类型不能关联时区,但 time
类型可以。现实世界中的时区如果没有与日期和时间相关联,则意义不大,因为时区偏移量可能会因夏令时边界而在一年中发生变化。
默认时区被指定为与UTC的固定数字偏移量。因此,在进行跨DST边界的日期/时间算术时,无法适应夏令时。
为了解决这些困难,我们建议在使用时区时使用同时包含日期和时间的日期/时间类型。我们不推荐使用 time with time zone
类型(尽管 PostgreSQL 支持它以兼容旧应用程序和SQL标准)。PostgreSQL 假定仅包含日期或时间的任何类型的本地时区。
所有带时区的日期和时间都存储在内部的UTC中。在显示给客户端之前,它们会使用 TimeZone 配置参数指定的时区转换为本地时间。
PostgreSQL 允许您以三种不同的形式指定时区
完整的时区名称,例如 America/New_York
。识别的时区名称列在 pg_timezone_names
视图中(参见第 53.34 节)。PostgreSQL 为此使用广泛使用的 IANA 时区数据,因此其他软件也识别相同的时区名称。
时区缩写,例如 PST
。这种指定仅定义了与 UTC 的特定偏移量,而完整的时区名称可能暗示了一组夏令时转换规则。识别的缩写列在 pg_timezone_abbrevs
视图中(参见第 53.33 节)。您不能将配置参数 TimeZone 或 log_timezone 设置为时区缩写,但您可以在日期/时间输入值和 AT TIME ZONE
操作符中使用缩写。
除了时区名称和缩写之外,PostgreSQL 还接受 POSIX 风格的时区规范,如第 B.5 节中所述。此选项通常不优于使用命名时区,但如果不存在合适的 IANA 时区条目,则可能需要。
简而言之,这是缩写和全名之间的区别:缩写代表与 UTC 的特定偏移量,而许多全名则暗示了本地夏令时规则,因此有两种可能的 UTC 偏移量。例如,2014-06-04 12:00 America/New_York
代表纽约当地时间的下午 12 点,对于这个特定日期是东部夏令时(UTC-4)。因此,2014-06-04 12:00 EDT
指定了相同的时间点。但是 2014-06-04 12:00 EST
指定的是东部标准时间(UTC-5)的下午 12 点,而不考虑该日期是否名义上实行了夏令时。
POSIX 风格时区规范中的符号与 ISO-8601 日期时间值中的符号含义相反。例如,2014-06-04 12:00+04
的 POSIX 时区将是 UTC-4。
为了增加复杂性,一些司法管辖区在不同时间使用相同的时区缩写表示不同的 UTC 偏移量;例如,在莫斯科,MSK
在某些年份表示 UTC+3,在另一些年份表示 UTC+4。PostgreSQL 根据给定日期该缩写的含义(或最近的含义)来解释此类缩写;但是,如上面的 EST
示例所示,这不一定与该日期的当地民用时间相同。
总而言之,时区名称和缩写是大小写不敏感的。(与 8.2 版本之前的 PostgreSQL 版本不同,后者在某些上下文中有大小写敏感,在其他上下文则没有。)
时区名称和缩写都不是硬编码在服务器中的;它们是从安装目录下的 .../share/timezone/
和 .../share/timezonesets/
中的配置文件获取的(参见第 B.4 节)。
配置参数 TimeZone 可以在 postgresql.conf
文件中设置,或以第 19 章中描述的任何其他标准方式设置。还有一些特殊的设置方法
该SQL命令 SET TIME ZONE
设置会话的时区。这是 SET TIMEZONE TO
的另一种拼写,具有更符合 SQL 规范的语法。
PGTZ
环境变量由 libpq 客户端使用,以便在连接时向服务器发送 SET TIME ZONE
命令。
interval
值可以使用以下详细语法编写
[@]quantity
unit
[quantity
unit
...] [direction
]
其中 quantity
是一个数字(可能带符号);unit
是 microsecond
、millisecond
、second
、minute
、hour
、day
、week
、month
、year
、decade
、century
、millennium
,或者这些单位的缩写或复数形式;direction
可以是 ago
或空。at 符号(@
)是可选的噪声。不同单位的数量会被隐式添加,并考虑适当的符号。ago
会否定所有字段。此语法也用于时间间隔输出,如果 IntervalStyle 设置为 postgres_verbose
。
可以不带显式的单位标记来指定天、小时、分钟和秒的数量。例如,'1 12:59:10'
读取方式与 '1 day 12 hours 59 min 10 sec'
相同。另外,可以使用破折号组合年份和月份;例如 '200-10'
读取方式与 '200 years 10 months'
相同。(这些较短的形式实际上是SQL标准允许的唯一形式,并且在 IntervalStyle
设置为 sql_standard
时用于输出。)
间隔值也可以使用 ISO 8601 时间间隔的格式来表示,可以使用标准第 4.4.3.2 节中的“带指示符的格式”或第 4.4.3.3 节中的“备用格式”。带指示符的格式如下所示。
Pquantity
unit
[quantity
unit
...] [ T [quantity
unit
...]]
字符串必须以 P
开头,并且可以选择包含一个 T
来引入一天中的时间单位。可用的单位缩写在 表 8.16 中给出。单位可以省略,并且可以按任何顺序指定,但小于一天的单位必须出现在 T
之后。特别是,M
的含义取决于它是在 T
之前还是之后。
表 8.16. ISO 8601 间隔单位缩写
缩写 | 含义 |
---|---|
Y | 年 |
M | 月(日期部分) |
W | 周 |
D | 天 |
H | 营业时间 |
M | 分钟(时间部分) |
S | 秒 |
备用格式中
P [years
-months
-days
] [ Thours
:minutes
:seconds
]
字符串必须以 P
开头,并且 T
将间隔的日期和时间部分分开。值以类似于 ISO 8601 日期的数字形式给出。
当使用 fields
规范编写间隔常量时,或者当将字符串赋给已定义 fields
规范的间隔列时,未标记数量的解释取决于 fields
。例如,INTERVAL '1' YEAR
被读作 1 年,而 INTERVAL '1'
意味着 1 秒。此外,fields
规范允许的最不显著字段“右侧”的字段值将被静默丢弃。例如,编写 INTERVAL '1 day 2:03:04' HOUR TO MINUTE
将会丢弃秒字段,但不会丢弃天字段。
根据SQL标准,间隔值的所有字段必须具有相同的符号,因此前导负号适用于所有字段;例如,间隔字面量 '-1 2:03:04'
中的负号同时适用于天和小时/分钟/秒部分。PostgreSQL 允许字段具有不同的符号,并传统上将文本表示中的每个字段视为独立符号,因此在本例中小时/分钟/秒部分被视为正数。如果 IntervalStyle
设置为 sql_standard
,则前导符号将被视为适用于所有字段(但仅当没有其他附加符号出现时)。否则,将使用传统的 PostgreSQL 解释。为避免歧义,建议在任何字段为负数时,为每个字段附加一个显式符号。
在内部,interval
值存储为三个整数字段:月、天和微秒。这些字段是分开保存的,因为月份的天数不同,而当涉及到夏令时转换时,一天可能只有 23 或 25 小时。使用其他单位的间隔输入字符串将被规范化为这种格式,然后以标准化的方式重构以用于输出,例如。
SELECT '2 years 15 months 100 weeks 99 hours 123456789 milliseconds'::interval; interval --------------------------------------- 3 years 3 mons 700 days 133:17:36.789
这里,周(被理解为“7 天”)被分开保存,而更小和更大的时间单位被合并并规范化。
输入字段值可以具有小数部分,例如 '1.5 weeks'
或 '01:02:03.45'
。但是,由于 interval
在内部只存储整数字段,小数必须转换为更小的单位。大于月的单位的小数部分将被舍入为整数个月,例如 '1.5 years'
变为 '1 year 6 mons'
。周和天的小数部分将计算为整数天和微秒,假设每月 30 天,每天 24 小时,例如 '1.75 months'
变为 1 mon 22 days 12:00:00
。只有秒才会在输出时显示为小数。
表 8.17 展示了一些有效的 interval
输入示例。
表 8.17. 间隔输入
示例: | 描述 |
---|---|
1-2 |
SQL 标准格式:1 年 2 个月 |
3 4:05:06 |
SQL 标准格式:3 天 4 小时 5 分钟 6 秒 |
1 年 2 个月 3 天 4 小时 5 分钟 6 秒 |
传统 Postgres 格式:1 年 2 个月 3 天 4 小时 5 分钟 6 秒 |
P1Y2M3DT4H5M6S |
ISO 8601 “带指示符的格式”:与上述含义相同 |
P0001-02-03T04:05:06 |
ISO 8601 “备用格式”:与上述含义相同 |
如前所述,PostgreSQL 将 interval
值存储为月、天和微秒。对于输出,月份字段通过除以 12 转换为年和月。天字段按原样显示。微秒字段被转换为小时、分钟、秒和秒的小数部分。因此,月、分钟和秒将永远不会显示超过 0-11、0-59 和 0-59 的范围,而显示的年、天和小时字段可能相当大。(如果希望将较大的天或小时值转换为下一个更高的字段,可以使用 justify_days
和 justify_hours
函数。)
间隔类型的输出格式可以通过命令 SET intervalstyle
设置为四种样式之一:sql_standard
、postgres
、postgres_verbose
或 iso_8601
。默认值为 postgres
格式。表 8.18 显示了每种输出样式的示例。
如果间隔值符合标准(仅年-月或仅日-时间,无正负成分混合),则 sql_standard
样式会产生符合 SQL 标准对间隔字面量字符串的规范的输出。否则,输出看起来像标准的年-月字面量字符串后跟一个日-时间字面量字符串,并添加显式符号以消除混合符号间隔的歧义。
当 DateStyle 参数设置为 ISO
时,postgres
样式的输出与 8.4 版本之前的 PostgreSQL 版本输出匹配。
当 DateStyle
参数设置为非 ISO
输出时,postgres_verbose
样式的输出与 8.4 版本之前的 PostgreSQL 版本输出匹配。
iso_8601
样式的输出与 ISO 8601 标准第 4.4.3.2 节中描述的“带指示符的格式”匹配。
表 8.18. 间隔输出样式示例
样式规范 | 年-月间隔 | 日-时间间隔 | 混合间隔 |
---|---|---|---|
sql_standard |
1-2 | 3 4:05:06 | -1-2 +3 -4:05:06 |
postgres |
1 年 2 个月 | 3 天 04:05:06 | -1 年 -2 个月 +3 天 -04:05:06 |
postgres_verbose |
@ 1 年 2 个月 | @ 3 天 4 小时 5 分钟 6 秒 | @ 1 年 2 个月 -3 天 4 小时 5 分钟 6 秒前 |
iso_8601 |
P1Y2M | P3DT4H5M6S | P-1Y-2M3DT-4H-5M-6S |
如果您在文档中发现任何不正确的内容、与您对特定功能的体验不符或需要进一步说明的内容,请使用 此表格 报告文档问题。