EXTRACT函数
EXTRACT
属于 SQL
的 DML(即数据库管理语言)函数,它主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒等数据,函数返回类型为 double precision
的数值。它支持的关健字 YEAR
、MONTH
、DAY
、HOUR
、MINUTE
、SECOND
、WEEKDAY
、YEARDAY
等等。
EXTRACT
使用语法为:
EXTRACT([关键字] from [日期])
示例说明
// 从当前时间中提取年份
SELECT EXTRACT(YEAR FROM TIMESTAMP '2023-05-20 16:54:53.644833');
// 从当前时间中提取月份
SELECT EXTRACT(MONTH FROM TIMESTAMP '2023-05-20 16:54:53.644833');
// 从当前时间中提取天
SELECT EXTRACT(DAY FROM TIMESTAMP '2023-05-20 16:54:53.644833');
// 从当前时间中提取小时
SELECT EXTRACT(HOUR FROM TIMESTAMP '2023-05-20 16:54:53.644833');
// 从当前时间中提取分钟
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2023-05-20 16:54:53.644833');
// 从当前时间中提取秒
SELECT EXTRACT(SECOND FROM TIMESTAMP '2023-05-20 16:54:53.644833');
// 从当前时间中提取世纪
SELECT EXTRACT(CENTURY FROM TIMESTAMP '2023-05-20 16:54:53.644833');
// 从当前时间中提取时间戳,单位:秒
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2023-05-20 16:54:53.644833');
输出结果:
2023-05-20 16:54:53.644833 // 当前时间
2023 // 年
5 // 月
20 // 日
16 // 时
54 // 分
53.644833 // 秒
21 // 世纪
1684601693.644833 // 时间戳,单位:秒
TIMESTAMP 转毫秒时间戳
如果我们数据库表中存储的字段类型是TIMESTAMP,但是我们查询结果想返回毫秒时间戳,该如何转换呢?
具体SQL如下:
SELECT FLOOR(EXTRACT(EPOCH FROM TIMESTAMP '2023-05-20 16:54:53.644833') * 1000);
输出结果:
1684601693644