【PostgreSQL】日期操作
1、获取当前日期的函数和当前时间的函数
使用日期函数获取系统当期日期,输入语句如下:
SELECT CURRENT_DATE;
使用时间函数获取系统当期日期(返回时带时区),输入语句如下:
SELECT CURRENT_TIME;
使用时间函数获取系统当期日期(返回时不带时区),输入语句如下:
SELECT LOCALTIME;
2、返回当前日期和时间的函数
使用日期时间函数获取当前系统日期和时间,输入语句如下:
SELECT CURRENT_TIMESTAMP,LOCALTIMESTAMP,NOW();
3、获取指定值的日期
使用EXTRACT函数从月份中提取日期,输入语句如下:
SELECT EXTRACT(DAY FROM TIMESTAMP '2012-09-10 10:18:40');
使用EXTRACT函数从月份中提取月份,输入语句如下:
SELECT EXTRACT(MONTH FROM TIMESTAMP '2012-09-10 10:18:40');
使用EXTRACT函数从月份中提取年份,输入语句如下:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2012-09-10 10:18:40');
使用EXTRACT函数查询指定日期是一年中的第几天,输入语句如下:
SELECT EXTRACT(DOY FROM TIMESTAMP '2012-09-10 10:18:40');
使用EXTRACT函数查询指定日期是一周中的星期几,输入语句如下:
SELECT EXTRACT(DOW FROM TIMESTAMP '2012-09-10 10:18:40');
使用EXTRACT函数查询指定日期是该年的第几季度(1-4),输入语句如下:
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2012-09-10 10:18:40');
4、日期和时间的运算操作
计算指定日期加上间隔天数后的结果,输入语句如下:
SELECT DATE '2019-09-28' + integer '10';
计算指定日期加上间隔小时后的结果,输入语句如下:
SELECT DATE '2012-09-28' + interval '3 hour';
计算指定日期加上指定时间后的结果,输入语句如下:
SELECT DATE '2012-09-28' + time '06:00';
计算指定日期和时间加上间隔时间后的结果,输入语句如下:
SELECT TIMESTAMP '2012-09-28 02:00:00' + interval '10 hours';
计算指定日期之间的间隔天数,输入语句如下:
SELECT date '2012-11-01' - date '2012-09-10';
计算指定日期减去间隔天数后的结果,输入语句如下:
SELECT DATE '2012-09-28' - integer '10';
计算整数与天数相乘的结果,输入语句如下:
SELECT 15 * interval '2 day';
计算整数与秒数相乘的结果,输入语句如下:
SELECT 50 * interval '2 second';
计算小时数与整数相乘的结果,输入语句如下:
SELECT interval '1 hour' / integer '2';
5、extract函数从日期/时间值中抽取子域,例如年或者小时等
-- CENTURY YEAR MONTH DAY HOUR MIN SEC
SELECT EXTRACT(CENTURY FROM TIMESTAMP '2023-11-17 16:55:13');
SELECT EXTRACT(MIN FROM TIMESTAMP '2023-11-17 16:55:13');
6、数据类型格式化函数
to_char(timestamp, text) text 把时间戳转成字符串 to_char(current_timestamp, 'HH12:MI:SS')
to_char(interval, text) text 把间隔转成字符串 to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(int, text) text 把整数转成字符串 to_char(125, '999')
to_char(double precision, text) text 把实数或双精度转成字符串 to_char(125.8::real, '999D9')
to_char(numeric, text) text 把数字转成字符串 to_char(-125.8, '999D99S')
to_date(text, text) date 把字符串转成日期 to_date('05 Dec 2000', 'DD Mon YYYY')
to_number(text, text) numeric 把字符串转成数字 to_number('12,454.8-', '99G999D9S')
to_timestamp(text, text) timestamp with time zone 把字符串转成时间戳 to_timestamp('05 Dec 2000', 'DD Mon YYYY')
7、时间戳 转换 时间
select to_timestamp( 1700212063000 / 1000) AT TIME ZONE 'PRC'