date_part函数基于传统Ingres函数,等效于SQL标准函数extract。
- date_part('field', source)
这里的field参数必须是一个字符串,而不是一个名称。有效的field与extract一样,详细信息请参见EXTRACT。
示例:
gbase=# SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40');
date_part
-----------
16
(1 row)
gbase=# SELECT date_part('hour', INTERVAL '4 hours 3 minutes');
date_part
-----------
4
(1 row)
下图显示了日期和时间值的规范格式。
表 日期/时间规范格式
类别 | 模式 | 描述 |
小时 | HH | 一天的小时数,取值范围为01-12 |
HH12 | 一天的小时数,取值范围为01-12 | |
HH24 | 一天的小时数,取值范围为00-23 | |
分钟 | MI | 分钟,取值范围为00-59 |
秒 | SS | 秒,取值范围为00-59 |
FF | 微秒,取值范围为000000-999999 | |
SSSSS | 午夜后的秒,取值范围为0-86399 | |
上、下午 | AM或A.M. | 上午标识 |
PM或P.M. | 下午标识 | |
年 | Y,YYY | 带逗号的年(4位及以上) |
SYYYY | 公元前四位年 | |
YYYY | 年(4位及以上) | |
YYY | 年的后三位 | |
YY | 年的后两位 | |
Y | 年的最后一位 | |
IYYY | ISO年(4位及以上) | |
IYY | ISO年的最后三位 | |
IY | ISO年的最后两位 | |
I | ISO年的最后一位 | |
RR | 年的后两位(可在21世纪存储20世纪的年份) | |
RRRR | 可接收2位或4位。若是两位,则和RR的返回值相同,若是四位,则和YYYY相同。 | |
BC或B.C. AD或A.D. | 纪元标识。BC(公元前),AD(公元后)。 | |
月 | MONTH | 全长大写月份名(空白填充为9字符) |
MON | 大写缩写月份名(3字符) | |
MM | 月份数,取值范围为01-12 | |
RM | 罗马数字的月份(I-XII ;I=JAN)(大写) | |
天 | DAY | 全长大写日期名(空白填充为9字符) |
DY | 缩写大写日期名(3字符) | |
DDD | 一年里的日,取值范围为001-366 | |
DD | 一个月里的日,取值范围为01-31 | |
D | 一周里的日,取值范围为1-7(从周日开始计算,1表示周日) | |
周 | W | 一个月里的周数,取值范围为1-5(第一周从该月第一天开始) |
WW | 一年里的周数,取值范围为1-53。(第一周从该年的第一天开始) | |
IW | ISO一年里的周数(第一个星期四在第一周里) | |
世纪 | CC | 世纪(2位)(21世纪从2001-01-01开始) |
儒略日 | J | 儒略日(自公元前4712年1月1日来的天数) |
季度 | Q | 季度 |
上表中RR计算年的规则如下:
- l输入的两位年份在00~49之间:
当前年份的后两位在00~49之间,返回值年份的前两位和当前年份的前两位相同; 当前年份的后两位在50~99之间,返回值年份的前两位是当前年份的前两位加1。
- 输入的两位年份在50~99之间:
当前年份的后两位在00~49之间,返回值年份的前两位是当前年份的前两位减1; 当前年份的后两位在50~99之间,返回值年份的前两位和当前年份的前两位相同。