一、获取当前时间

select now()
select current_timestamp
select localtimestamp
select clock_timestamp()

这里写图片描述
有时候,我们不需要这么完整细致的时间,自然就有
select current_date
select current_time
select localtime
这里写图片描述

二、时间的加减

老实说,这是见过最奇怪的一套时间计算的方式了。
select now() + interval '2 years';
select now() + interval '2 year';
select now() + interval '2 y';
select now() + interval '2 Y';
select now() + interval '2Y';12345
或者
SELECT now()::timestamp + '1 year';  --当前时间加1年
SELECT now()::timestamp + '1 month';  --当前时间加一个月
SELECT now()::timestamp + '1 day';  --当前时间加一天
SELECT now()::timestamp + '1 hour';  --当前时间加一个小时
SELECT now()::timestamp + '1 min';  --当前时间加一分钟
SELECT now()::timestamp + '1 sec';  --加一秒钟
select now()::timestamp + '1 year 1 month 1 day 1 hour 1 min 1 sec';  --加1年1月1天1时1分1秒
SELECT now()::timestamp + (col || ' day')::interval FROM table --把col字段转换成天 然后相加
结果都是一样的:
 
interval部分可以不写,以此类推,月、日、小时、分钟、秒的加减计算也同理。
 
  

 

 

 
值得一提的是单写M会默认为分钟的加减,针对月的加减建议写完整的month或months或者简写mon
 

三、格式化函数

 
3.1时间转字符串
to_char(timestamp,text)
 这里写图片描述

3.2字符串转日期
to_date(text,text)
 

 

 

3.3字符串转时间
to_timestamp(text,text)
这里写图片描述

3.4Unix时间戳转时间
to_timestamp(unixtime)
 这里写图片描述
关于时间格式的模式,丢表跑:
 

  模式
  描述
 
  HH
  一天的小时数(01-12)

  HH12
  一天的小时数(01-12)

  HH24
  一天的小时数(00-23)

  MI
  分钟(00-59)

  SS
  秒(00-59)

  MS
  毫秒(000-999)

  US
  微秒(000000-999999)

  AM
  正午标识(大写)

  Y,YYY
  带逗号的年(4和更多位)

  YYYY
  年(4和更多位)

  YYY
  年的后三位

  YY
  年的后两位

  Y
  年的最后一位

  MONTH
  全长大写月份名(空白填充为9字符)

  Month
  全长混合大小写月份名(空白填充为9字符)

  month
  全长小写月份名(空白填充为9字符)

  MON
  大写缩写月份名(3字符)

  Mon
  缩写混合大小写月份名(3字符)

  mon
  小写缩写月份名(3字符)

  MM
  月份号(01-12)

  DAY
  全长大写日期名(空白填充为9字符)

  Day
  全长混合大小写日期名(空白填充为9字符)

  day
  全长小写日期名(空白填充为9字符)

  DY
  缩写大写日期名(3字符)

  Dy
  缩写混合大小写日期名(3字符)

  dy
  缩写小写日期名(3字符)

  DDD
  一年里的日子(001-366)

  DD
  一个月里的日子(01-31)

  D
  一周里的日子(1-7;周日是1)

  W
  一个月里的周数(1-5)(第一周从该月第一天开始)

  WW
  一年里的周数(1-53)(第一周从该年的第一天开始)
 

四、一些重要函数

4.1时间间隔
age(timestamp, timestamp)
 

 

 


当然也可以只输入一个参数,计算current_date与入参的时间间隔。
 

 

 


4.2时间截取
date_part(text, timestamp)
extract(field from timestamp)
 

 

 


还可以截断至指定精度
date_trunc(text, timestamp)
 

 

 


如图所示,小时后的分和秒被置为0。
 
 

附: