PostgreSQL的date_part/extract函数

PostgreSQL可以使用datepart/Extract从日期时间类型中抽取部分内容,帮助内容如下:

EXTRACT(fieldFROMsource)

extract函数从日期/时间数值里抽取子域,比如年、小时等。 source必须是一个 typetimestamp,time,interval类型的值 表达式(类型为date的表达式将转换为timestamp,因此也可以用)。field是一个标识符或者字符串,它指定从源数据中抽取的域。 extract函数返回类型为 double precision 的数值。下列数值是有效数据域的名字:

century

世纪

第一个世纪从 0001-01-01 00:00:00 AD 开始,尽管那时候人们还不知道 这是第一个世纪。这个定义适用于所有使用阳历的国家。没有 0 世纪, 我们直接从公元前 1 世纪到公元 1 世纪。 如果你认为这个不合理,那么请把抱怨发给:梵蒂冈,罗马圣彼得教堂,教皇收

PostgreSQL8.0 以前版本里并不遵循世纪的习惯编号,只是把年份除以 100 。

day

(月份)里的天(1-31)

decade

年份除以 10

dow

周中天的索引(0-6 ;星期天是 0)

请注意,extract的周中天编号和to_char(…, ‘D’)函数不同。

doy

一年的第几天(1-365/366)

epoch

对于date和timestamp值而言,是自 1970-01-01 00:00:00-00 以来的秒数 (结果可能是负数);对于interval值而言,它是时间间隔的总秒数。

下面是把 epoch 值转换回时间戳的方法:

(Theto_timestampfunction encapsulates the above conversion.)

hour

The hour field (0 – 23)小时域(0-23)

isodow

周中的第几天 [1-7] 星期一:1) 星期天:(7)。

dow除了星期天外,都相同。这与ISO8601标准周中的第几天编码相匹配。 matches theISO8601 day of the week numbering.

isoyear

日期中的ISO8601标准年(不适用于间隔)。

每个带有星期一开始的周中包含1月4日的ISO年, 所以在年初的1月或12月下旬的ISO年可能会不同与阳历的年。 见week获取更多信息。

这个域不能用于 PostgreSQL 8.3之前的版本。

microseconds

秒域(包括小数部分)乘以 1,000,000 。请注意它包括全部的秒。

millennium

千年

20 世纪(19xx 年)里面的年份在第二个千年里。第三个千年从 2001 年 1 月 1 日零时开始。

PostgreSQL8.0 之前的版本并不遵循千年编号的习惯,只是返回年份除以 1000 。

milliseconds

秒域(包括小数部分)乘以 1000 。请注意它包括完整的秒。

minute

分钟域(0-59)

month

Fortimestampvalues, the number of the month within the year (1 – 12) ; forintervalvalues the number of months, modulo 12 (0 – 11) 对于timestamp值,它是一年里的月份数(1-12); 对于interval值,它是月的编号,然后对 12 取模(0-11)

quarter

日期中年所在季度(1-4)(仅用于 timestamp 值)

second

秒域,包括小数部分(0-59)[1]

timezone

与UTC的时区偏移量,以秒记。正数对应 UTC 东边的时区,负数对应 UTC 西边的时区

timezone_hour

时区偏移量的小时部分。

timezone_minute

时区偏移量的分钟部分。

week

该天在所在的年份里是第几周。 (ISO8601)定义一年的第一周包含该年的一月四日(ISO-8601 的周从星期一开始)。 换句话说,一年的第一个星期四在第一周。(只用于 timestamp 值)

因此,一月的头几天可能是前一年的第 52 或者第 53 周。 比如,2005-01-01是 2004 年的第 53 周,而2006-01-01是 2005 年的第 52 周

year

年份域。要记住这里没有0 AD,所以从AD年里抽取BC年应该小心些

extract函数主要的用途是运算。对于用于显示的日期/时间数值格式化,见Section 9.8

date_part函数是仿照在传统的Ingres函数。等效于 SQL 标准函数extract:

Note that here thefieldparameter needs to be a string value, not a name. The valid field names for date_partare the same as for extract. 请注意这里的field参数必须是一个字符串值,而不是一个名字。 date_part的有效域名参数和extract的一样。

分享到:

0 条评论

沙发空缺中,还不快抢~