一、获取当前时间
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() + 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部分可以不写,以此类推,月、日、小时、分钟、秒的加减计算也同理。
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)
一天的小时数(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与入参的时间间隔。
当然也可以只输入一个参数,计算current_date与入参的时间间隔。
4.2时间截取
date_part(text, timestamp)
extract(field from timestamp)
还可以截断至指定精度
date_trunc(text, timestamp)
如图所示,小时后的分和秒被置为0。
附: