↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16
开发中的版本: 19 / 20devel
开发快照。 PostgreSQL 20devel 尚未正式发布,内容仍可能变化。

B.1. 日期/时间输入解释 #

日期/时间输入字符串按照下面的过程进行解码。

  1. 将输入字符串拆分为词元,并把每个词元归类为字符串、时间、时区或数字。

    1. 如果数字词元包含冒号(:),则它是一个时间字符串。把其后的所有数字和冒号都包含进来。

    2. 如果数字词元包含连字符(-)、斜杠(/)或两个以上的点(.),则它是一个日期字符串,并且可能带有文本形式的月份。如果已经见过日期词元,则它会被解释为时区名称(例如 America/New_York)。

    3. 如果词元仅由数字组成,那么它要么是单个字段,要么是 ISO 8601 的拼接式日期(例如,19990113 表示 1999 年 1 月 13 日)或时间(例如,141516 表示 14:15:16)。

    4. 如果词元以加号(+)或减号(-)开头,那么它要么是数字时区,要么是特殊字段。

  2. 如果词元是一个纯字母字符串,则将其与可能的字符串匹配:

    1. 先看该词元是否匹配任何已知的时区缩写。这些缩写由第 B.4 节中描述的配置设置决定。

    2. 如果没有找到,则搜索内部表,将该词元识别为特殊字符串(例如 today)、星期名(例如 Thursday)、月份名(例如 January)或噪声词(例如 at、on)。

    3. 如果仍然没有找到,则抛出错误。

  3. 当词元是一个数字或数字字段时:

    1. 如果有八位或六位数字,并且之前还没有读取到其他日期字段,则将其解释为“拼接式日期”(例如 19990118 或 990118)。其解释方式分别为 YYYYMMDD 或 YYMMDD。

    2. 如果词元是三位数字,并且已经读取到了年份,则将其解释为一年中的第几天。

    3. 如果是四位或六位数字,并且已经读取到了年份,则将其解释为时间(HHMM 或 HHMMSS)。

    4. 如果有三位或更多位数字,并且尚未找到任何日期字段,则将其解释为年份(这会强制其余日期字段按 yy-mm-dd 的顺序解释)。

    5. 否则,假定日期字段顺序遵循 DateStyle 设置:mm-dd-yy、dd-mm-yy 或 yy-mm-dd。如果发现月份字段或日字段超出范围,则抛出错误。

  4. 如果指定了 BC,则将年份取反并加一后再用于内部存储。(格里高利历中没有 0 年,因此从数值上说,公元前 1 年会变成年 0。)

  5. 如果未指定 BC,并且年份字段长度为两位,则将年份调整为四位。如果该字段小于 70,则加 2000,否则加 1900。

    提示

    可以通过带前导零的四位数字来输入公元 1–99 年(例如,0099 表示公元 99 年)。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.