PostgreSQL | EXTRACT / DATE_PART | 获取时间的年月日等字串
extract
EXTRACT 函数是 PostgreSQL 中用于从日期和时间类型中提取特定部分(如年、月、日、小时等)的函数。
格式
EXTRACT(field FROM source)
-- field 参数是要提取的部分,例如 YEAR、MONTH、DAY、HOUR 等。-- source 参数是包含日期或时间的表达式。
示例
例如,要从当前日期时间中提取年\月\日\,可以使用以下查询:
SELECT EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS current_year, EXTRACT(MONTH FROM CURRENT_TIMESTAMP) AS current_month, EXTRACT(DAY FROM CURRENT_TIMESTAMP) AS current_day, EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS current_hour;
扩展
上述field位置可以开可以使用如下参数:
century:世纪year:年份 decade:年份/10month:月份day:本月第几天hour:时间中的小时minute:时间中的分钟second:时间中的秒 microseconds:时间中的毫秒 milliseconds:时间中的微妙 week:返回当前日期在当年的周次数 dow:一周中的星期几(以西方时间计算周日为0) doy:本年的第几天 epoch:自1979-01-01 00:00:00 以来的秒数 isodow:一周中的星期几(周一为1 - 周日为7) isoyear:日期所在的 ISO 8601 周编号年份 timezone:与UTC的时间偏移量,返回偏移量秒数 timezone_hour:与UTC的时间偏移量,返回偏移量小时 timezone_minute`:与UTC的时间偏移量,返回偏移量分钟
timezone的测试可以使用:
-- 查询时区show timezone; -- 临时变更时区set time zone 'UTC';set time zone '+16';set time zone '+16:30'; -- 变更后可以测试 timezone, timezone_hour, timezone_minute 的效果。select extract(timezone_minute from now());
date_part(‘field’, timestamp)
格式
date_part与extract功能一致,只是使用方式采用 date_part(‘field’, timestamp) 方式,而extract使用extract(field from timestamp) 格式,field枚举列表与上述一致,感兴趣可以实操试试。
如果想获取2024-10-28 10:00:00与之前的某个特定时间比如2024-10-28 00:00:00的时间差的总秒数, 一个想当然的方法是:
select extract(second from ('2024-10-28 10:00:00'::timestamptz-'2024-10-28 00:00:00'::timestamptz))
得到的结果是0, 很明显是错误的, 正确的方式是:
select extract(epoch from ('2024-10-28 10:00:00'::timestamptz-'2024-10-28 00:00:00'::timestamptz)) --返回正确的结果: 36000秒
声明:本网站部分内容来源于网络,版权归原权利人所有,其观点不代表本网站立场;本网站视频或图片制作权归当前商户及其作者,涉及未经授权的制作均须标记“样稿”。如内容侵犯了您相关权利,请及时通过邮箱service@ichub.com与我们联系。
验证