Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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)或噪声词(例如,aton)进行匹配。

    3. 如果仍然未找到,则抛出一个错误。

  3. 当标记是数字或数字字段时

    1. 如果存在八位或六位数字且先前未读取其他日期字段,则解释为 连接日期(例如,19990118990118)。解释为 YYYYMMDDYYMMDD

    2. 如果该标记为三位数字且已读取一年,则解释为年中的第几天。

    3. 如果四位或六位数字且已读取一年,则解释为时间 (HHMMHHMMSS)。

    4. 如果三位或更多的数字且尚未找到日期字段,则解释为一年(这会强制剩余日期字段按 yy-mm-dd 排序)。

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

  4. 如果已指定 BC,则对年份取反,然后加一以实现内部存储。(公历中没有 0 年,因此 1 BC 在数字上变成了 0 年。)

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

    提示

    可以通过用 4 位数字加前导零来输入公历年份公元 1-99(例如,0099 是公元 99 年)。