EXTRACT
返回子字段,例如日期/时间值中的年份或小时,然后返回类型为
NUMERIC
的值。 EXTRACT
旨在用于计算处理,而不是用于格式化日期/时间值以进行显示。
行为类型
语法
EXTRACT ( field FROM date )
参数
- field
- 一个常数值,指定要从 date 中提取的子字段(请参阅下文的字段值)。
- date
- 要处理的日期,是求值结果具有以下一种数据类型的表达式:
-
DATE (转换为 TIMESTAMP)
- TIMESTAMP/TIMESTAMPTZ
- INTERVAL
-
字段值
示例
从当前 TIMESTAMP 中提取季度中的星期几和日期:
=> SELECT CURRENT_TIMESTAMP AS NOW;
NOW
-------------------------------
2016-05-03 11:36:08.829004-04
(1 row)
=> SELECT EXTRACT (DAY FROM CURRENT_TIMESTAMP);
date_part
-----------
3
(1 row)
=> SELECT EXTRACT (DOQ FROM CURRENT_TIMESTAMP);
date_part
-----------
33
(1 row)
从当前时间中提取时区小时:
=> SELECT CURRENT_TIMESTAMP;
?column?
-------------------------------
2016-05-03 11:36:08.829004-04
(1 row)
=> SELECT EXTRACT(TIMEZONE_HOUR FROM CURRENT_TIMESTAMP);
date_part
-----------
-4
(1 row)
提取从 01-01-1970 00:00 至今的秒数:
=> SELECT EXTRACT(EPOCH FROM '2001-02-16 20:38:40-08'::TIMESTAMPTZ);
date_part
------------------
982384720.000000
(1 row)
提取 01-01-1970 00:00 和在此之前 5 天 3 小时之间的秒数:
=> SELECT EXTRACT(EPOCH FROM -'5 days 3 hours'::INTERVAL);
date_part
----------------
-442800.000000
(1 row)
将上个示例中的结果转换为 TIMESTAMP:
=> SELECT 'EPOCH'::TIMESTAMPTZ -442800 * '1 second'::INTERVAL;
?column?
------------------------
1969-12-26 16:00:00-05
(1 row)