1.首先系统默认的四个函数,前两个是日期+时间,后面的是单独日期函数与单独时间。
--标准时间函数
select now();
2022-01-04 10:31:26.435501+08
--标准时间函数,同now()
select current_timestamp;
2022-01-04 10:31:33.679012+08
--标准日期
select current_date;
2022-01-04
--标准时间
select current_time;
10:31:47.180718+08
2.时间上的计算。这里是可以根据当前时间计算下个月,下周的时间等等,个人喜欢用current_date(纯日期,看着舒服),计算时间加减,注意关键字interval(间隔的意思),但是用now时可以不加!!!
--当前日期 + 一天
select current_date,current_date + interval '1 day';
2022-01-04 2022-01-05 00:00:00
--当前日期 + 一周
select current_date,current_date + interval '1 week';
2022-01-04 2022-01-11 00:00:00
--当前日期 + 一月
select current_date,current_date + interval '1 month';
2022-01-04 2022-02-04 00:00:00
--当前日期 + 一年
select current_date,current_date + interval '1 year';
2022-01-04 2023-01-04 00:00:00
--用now,当前时间 + 1天,其他同理
select now(),now() + interval '1 day';
2022-01-04 10:43:14.587596+08 2022-01-04 10:43:14.587596+08
select now(),now() + ' 1 year';
2022-01-04 10:43:14.587596+08 2023-01-04 10:43:14.587596+08
PS:强大的包容性,计算时间可以用另外两种表达,而且时间还忽略了大小写,很赞!!
时间 | 标准 | 简写 | 单数 |
年 | Years | Y | year |
月 | Months | M | Month |
周 | Weeks | W | Week |
天 | Days | D | Day |
小时 | Hours | H | Hour |
分钟 | Minutes | M | Minute |
秒 | Seconds | S | Second |
select current_time,current_time + interval '1 hours';
10:36:49.929987+08 11:36:49.929987+08
select current_time,current_time + interval '1 Minutes',current_time + interval '1 MinUte';
10:37:16.843502+08 10:38:16.843502+08 10:38:16.843502+08
3.时间函数的进阶,经常会遇到查询上月末的某天,或者每天的2点20分等等~
--当前日期,本年第一天,上一年最后一天
select current_date,date_trunc('year', current_date), date_trunc('year', current_date) - interval '1 day';
2022-01-04 2022-01-01 00:00:00+08 2021-12-31 00:00:00+08
--当前日期,当月第一天,上月最后一天
select current_date,date_trunc('month', current_date), date_trunc('month', current_date) - interval '1 day';
2022-01-04 2022-01-01 00:00:00+08 2021-12-31 00:00:00+08
--当前日期,今天2点20
select current_date,current_date + interval '2 hour' + interval '20 M';
2022-01-04 2022-01-04 02:20:00
4.基本技能,时间转为字符串
select to_char(now(),'YYYY-MM-DD HH24:MI:SS'),To_char(now(),'yyyy-mm-dd hh24:mi:ss');
2022-01-04 11:14:39 2022-01-04 11:14:39
select to_char(current_timestamp,'YYYY-MM-DD HH24:MI:SS'),to_char(current_timestamp,'HH24:MI:SS');
2022-01-04 11:14:50 11:14:50
select to_char(current_date,'YYYY-MM-DD HH24:MI:SS');
2022-01-04 00:00:00