date_part
date_part函数是在传统的Ingres函数的基础上制作的(该函数等效于SQL标准函数extract):
- date_part('field', source)
这里的field参数必须是一个字符串,而不是一个名称。有效的field与extract一样,详细信息请参见EXTRACT。
示例:
openGauss=# SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40');
date_part
-----------
16
(1 row)
openGauss=# SELECT date_part('hour', INTERVAL '4 hours 3 minutes');
date_part
-----------
4
(1 row)
表2显示了可以用于格式化日期和时间值的模版。
表 2 用于日期/时间格式化的模式
类别 | 模式 | 描述 |
---|
小时 | 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 | 可接收4位年或两位年。若是两位,则和RR的返回值相同,若是四位,则和YYYY相同。 |
| 纪元标识。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计算年的规则如下:
-
输入的两位年份在00~49之间:
-
当前年份的后两位在00~49之间,返回值年份的前两位和当前年份的前两位相同。
- 当前年份的后两位在50~99之间,返回值年份的前两位是当前年份的前两位加1。
-
输入的两位年份在50~99之间:
-
当前年份的后两位在00~49之间,返回值年份的前两位是当前年份的前两位减1。
-
当前年份的后两位在50~99之间,返回值年份的前两位和当前年份的前两位相同。