PostgreSQL extract() 函数使用指南

PostgreSQL extract() 函数从指定的时间戳或者时间间隔中抽取指定的部分并返回。

extract() 语法

这是 PostgreSQL extract() 函数的语法:

extract(field FROM source TIMESTAMP) -> DOUBLE PRECISION
extract(field FROM source DATE) -> DOUBLE PRECISION
extract(field FROM source TIME) -> DOUBLE PRECISION
extract(field FROM source INTERVAL) -> DOUBLE PRECISION

参数

field

必需的。 它是表示要抽取的部分关键字。您可以是使用以下关键字:

  • CENTURY: 世纪
  • DAY: 天
  • DECADE: 十年,即年份除以 10
  • DOW: 星期几。 星期天为 0,星期六为 6。
  • DOY: 一年中的某一天 (1–365/366)
  • EPOCH: 对于 TIMESTAMP 值来说,返回 Unix 时间戳。对于间隔值来说,返回总的秒数。
  • HOUR: 小时 0-23
  • ISODOW: 星期几。 星期一为 1,星期天为 7。
  • ISOYEAR: 日期所在的 ISO 8601 周编号年份(不适用于间隔)
  • JULIAN: 与日期或时间戳对应的儒略历日期(不适用于间隔)
  • MICROSECONDS: 秒乘以 1 000 000
  • MILLENNIUM: 千年期
  • MILLISECONDS: 秒乘以 1 000
  • MINUTE: 分钟
  • MONTH: 对于 TIMESTAMP 值来说,返回一年中的月份 1 - 12;对于间隔值来说,返回月数 0 - 11。
  • QUARTER: 季节 1-4
  • SECOND: 秒
  • TIMEZONE: 时区偏移量,以秒为单位
  • TIMEZONE_HOUR: 时区偏移量的小时部分
  • TIMEZONE_MINUTE: 时区偏移量的分钟部分
  • WEEK: 一年中的 ISO 8601 周编号
  • YEAR: 年份
source

必需的。 它可以是时间戳、日期、时间或者间隔类型的。

返回值

PostgreSQL extract() 函数返回一个从 source 返回通过字符串 field 指定的部分。

extract() 示例

你能使用 extract() 函数返回一个时间戳值所在的世纪。如下:

SELECT extract(CENTURY FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
      21

你能使用 extract() 函数获得一个时间戳值的天字段。如下:

SELECT extract(DAY FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
      16

你能使用 extract() 函数获得一个间隔值的中有几天。如下:

SELECT extract(DAY FROM INTERVAL '2 days 10 minutes');
 extract
---------
       2

你能使用 extract() 函数获得一个时间戳值的 DECADE 字段。如下:

SELECT extract(DECADE FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
     202

你能使用 extract() 函数获得一个时间戳值是星期几(0-6 表示星期天到星期六)。如下:

SELECT extract(DOW FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
       1

你能使用 extract() 函数获得一个时间戳值是一年中的第几天。如下:

SELECT extract(DOY FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
     136

你能使用 extract() 函数将一个时间戳值转为 Unix 时间戳。如下:

SELECT extract(EPOCH FROM TIMESTAMP '2022-05-16 12:41:13.662522');
      extract
-------------------
 1652704873.662522

你能使用 extract() 函数获得一个时间戳值中的小时部分。如下:

SELECT extract(HOUR FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
      12

你能使用 extract() 函数获得一个时间戳值是星期几(1-7 表示星期一到星期天)。如下:

SELECT extract(ISODOW FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
       1

你能使用 extract() 函数获得一个时间戳值落在 ISO 8601 周编号年分。如下:

SELECT extract(ISOYEAR FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
    2022

你能使用 extract() 函数获得一个时间戳值对应的儒略日期。如下:

SELECT extract(JULIAN FROM TIMESTAMP '2022-05-16 12:41:13.662522');
           extract
------------------------------
 2459716.52863035326388888889

你能使用 extract() 函数将时间戳值中的全秒转为微秒。如下:

SELECT extract(MICROSECONDS FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
----------
 13662522

你能使用 extract() 函数获得一个时间戳值所处的千年期。如下:

SELECT extract(MILLENNIUM FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
       3

你能使用 extract() 函数将时间戳值中的全秒转为毫秒。如下:

SELECT extract(MILLISECONDS FROM TIMESTAMP '2022-05-16 12:41:13.662522');
  extract
-----------
 13662.522

你能使用 extract() 函数获得一个时间戳值中的分钟部分。如下:

SELECT extract(MINUTE FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
      41

你能使用 extract() 函数获得一个时间戳值中的月份部分。如下:

SELECT extract(MONTH FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
       5

你能使用 extract() 函数获得一个时间戳值中的季节部分。如下:

SELECT extract(QUARTER FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
       2

你能使用 extract() 函数获得一个时间戳值中的秒部分。如下:

SELECT extract(SECOND FROM TIMESTAMP '2022-05-16 12:41:13.662522');
  extract
-----------
 13.662522

你能使用 extract() 函数获得一个时间戳值位于一年中的第几周。如下:

SELECT extract(WEEK FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
      20

你能使用 extract() 函数获得一个时间戳值中的年份部分。如下:

SELECT extract(YEAR FROM TIMESTAMP '2022-05-16 12:41:13.662522');
 extract
---------
    2022