PostgreSQL 教程: extract 函数 您所在的位置:网站首页 提取年月份函数 PostgreSQL 教程: extract 函数

PostgreSQL 教程: extract 函数

2024-04-07 22:46| 来源: 网络整理| 查看: 265

PostgreSQL 的EXTRACT()函数从日期/时间值中提取年、月、日等字段。

语法

下面说明了EXTRACT()函数的语法:

EXTRACT(field FROM source) 参数

PostgreSQL 的EXTRACT()函数需要两个参数:

1) field

field参数指定从日期/时间值中提取哪个字段。

下表说明了有效的字段值:

字段值 时间戳 间隔 CENTURY 世纪 世纪数 DAY 一月中的第几天 (1-31) 天数 DECADE 年份除以 10 得到的十年 与时间戳相同 DOW 星期几,星期日 (0) 至星期六 (6) 不适用 DOY 一年中的第几天,范围从 1 到 366 不适用 EPOCH 自 1970-01-01 00:00:00 UTC 以来的秒数 间隔内的总秒数 HOUR 小时 (0-23) 小时数 ISODOW 基于 ISO 8601 的星期几,星期一 (1) 至星期日 (7) 不适用 ISOYEAR 基于 ISO 8601 的一年中的第几周 不适用 MICROSECONDS 秒字段,包括小数部分,乘以 1000000 与时间戳相同 MILLENNIUM 几千年 千年数 MILLISECONDS 秒字段,包括小数部分,乘以 1000 与时间戳相同 MINUTE 分钟 (0-59) 分钟数 MONTH 月份,1-12 月数,取模 (0-11) QUARTER 一年中的季度 季度数 SECOND 秒 秒数 TIMEZONE 与 UTC 的时区偏移量,以秒为单位 不适用 TIMEZONE_HOUR 时区偏移量的小时部分 不适用 TIMEZONE_MINUTE 时区偏移量的分钟部分 不适用 WEEK ISO 8601 周编号的一年中的第几周 不适用 YEAR 年份 与时间戳相同

2) source

source是TIMESTAMP或INTERVAL类型的值。如果传递一个DATE值,该函数会将其转换为一个TIMESTAMP值。

返回值

EXTRACT()函数返回一个双精度浮点数值。

示例

A) 从时间戳中提取的示例

从时间戳中提取年份:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2016-12-31 13:30:15');

结果如下:

2016

从时间戳中提取季度:

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2016-12-31 13:30:15');

结果是

4

从时间戳中提取月份:

SELECT EXTRACT(MONTH FROM TIMESTAMP '2016-12-31 13:30:15');

结果如下:

12

从时间戳中提取日:

SELECT EXTRACT(DAY FROM TIMESTAMP '2016-12-31 13:30:15');

这是结果: 31

从时间戳中提取世纪:

SELECT EXTRACT(CENTURY FROM TIMESTAMP '2016-12-31 13:30:15');

正如预期的那样,它返回了 21:

21

从时间戳中提取十年:

SELECT EXTRACT(DECADE FROM TIMESTAMP '2016-12-31 13:30:15');

结果如下:

201

从时间戳中提取星期几:

SELECT EXTRACT(DOW FROM TIMESTAMP '2016-12-31 13:30:15');

结果是:

6

从时间戳中提取一年中的第几天:

SELECT EXTRACT(DOY FROM TIMESTAMP '2016-12-31 13:30:15');

它返回 366:

366

从时间戳中提取自 1970-01-01 00:00:00 UTC 以来的秒数:

SELECT EXTRACT(EPOCH FROM TIMESTAMP '2016-12-31 13:30:15');

结果是:

1483191015

从时间戳中提取小时部分:

SELECT EXTRACT(HOUR FROM TIMESTAMP '2016-12-31 13:30:15');

结果:

13

从时间戳中提取分钟部分:

SELECT EXTRACT(MINUTE FROM TIMESTAMP '2016-12-31 13:30:15');

结果如下:

30

从时间戳中提取秒部分:

SELECT EXTRACT(SECOND FROM TIMESTAMP '2016-12-31 13:30:15.45');

结果包括秒及其小数部分:

15.45

根据 ISO 8601 提取工作日:

SELECT EXTRACT(ISODOW FROM TIMESTAMP '2016-12-31 13:30:15');

从时间戳中提取毫秒:

SELECT EXTRACT(MILLISECONDS FROM TIMESTAMP '2016-12-31 13:30:15');

结果是 15 * 1000 = 15000

15000

从时间戳中提取微秒:

SELECT EXTRACT(MICROSECONDS FROM TIMESTAMP '2016-12-31 13:30:15');

结果是 15 * 1000000 = 15000000

15000000

B) 从间隔值中提取的示例

从间隔值中提取年份:

SELECT EXTRACT(YEAR FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

6

从间隔值中提取季度:

SELECT EXTRACT(QUARTER FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

2

从间隔值中提取月份:

SELECT EXTRACT(MONTH FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

5

从间隔值中提取日:

SELECT EXTRACT(DAY FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

4

从间隔值中提取小时部分:

SELECT EXTRACT(HOUR FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

3

从间隔值中提取分钟部分:

SELECT EXTRACT(MINUTE FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

2

从间隔值中提取秒数部分:

SELECT EXTRACT(SECOND FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

1

从间隔值中提取毫秒:

SELECT EXTRACT(MILLISECONDS FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

1000

从间隔值中提取微秒:

SELECT EXTRACT(MICROSECONDS FROM INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

1000000

从间隔值中提取十年:

SELECT EXTRACT(DECADE FROM INTERVAL '60 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

60

从间隔值中提取千年:

SELECT EXTRACT(MILLENNIUM FROM INTERVAL '1999 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

1

从间隔值中提取世纪:

SELECT EXTRACT(CENTURY FROM INTERVAL '1999 years 5 months 4 days 3 hours 2 minutes 1 second' );

结果

19

在本教程中,您学习了如何从日期/时间或间隔值中提取字段。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有