一、获取系统时间和时间格式化

    1. 1、获取当前时间
    2. select now();
    3. select current_timestamp;
    4. select CURRENT_TIME;
    5. select LOCALTIME;
    6. select LOCALTIMESTAMP;
    7. select now()::timestamp without time zone –获取当前时间 ,不带时区
    8. select current_date; –获取当天日期 格式YYYY-MM-DD
    9. 2、时间格式化
    10. select timestamp '2020-04-12 18:54:54'; –时间格式由字符串转换为timestamp,格式YYYY-DD-MM HH24:MI:SS
    11. select date '2020-04-12 18:54:54'; –时间格式由字符串转换为date ,格式YYYY-MM-DD
    12. timestamp '2020-04-12 18:54:54'是在函数中强制将字符串转换成timestamp的方法,在一般函数中此方法通用,后面不解释

    二、时间截取

    1. 1extract函数
    2. 显示年
    3. select extract(year from now());
    4. select extract(year from timestamp '2020-04-12 18:54:54');
    5. 显示月
    6. select extract(mon from now());
    7. 显示日
    8. select extract(day from now());
    9. 显示小时
    10. select extract(hour from now());
    11. 显示分钟
    12. select extract(minutes from now());
    13. 显示秒
    14. select extract(second from now());
    15. 2date_part函数
    16. 显示年
    17. select date_part('year' ,timestamp '2020-04-12 18:54:54');
    18. 显示月
    19. select date_part('month' ,timestamp '2020-04-12 18:54:54');

    三、时间相加减换算

    1. 1age函数
    2. 执行:select age(timestamp '20200426',timestamp '20191008');
    3. 结果:6 mons 18 days
    4. 从上面例子可以看出age函数可以计算两个时间之间相差的具体年月日。age函数如果不输入第一个参数,那么默认会用当前时间代替,看下例:
    5. 执行:select age(timestamp '20181008');
    6. 结果:1 year 6 mons 18 days –当前系统时间减去时间20181008的结果
    7. 2、如果现在想要查看两个时间之间有多少个月份,计算如下:
    8. 执行:select (EXTRACT(YEAR from age(timestamp 20160114’,timestamp 19911008’))*12+EXTRACT(MONTH from age(timestamp 20160114’,timestamp 19911008’))+1)
    9. 结果:292
    10. 注意:上面的算法后面+1,逻辑是如果两个时间相差的天数不满一个月,那么也算一个月

    四、日期计算

    1. --使用interval
    2. 当前时间加2
    3. select now()+interval '2 day';
    4. 当前时间减2
    5. select now()-interval '2 day';
    6. 当前时间减2个月
    7. select now()-interval '2 mon';
    8. 当前时间减2小时
    9. select now()+interval '-2 hour';