目录
current_timestamp、localtimestamp、localtime类型转化要求
格式 | 描述 |
---|---|
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 | 年的后两位 |
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)(第一周从该年的第一天开始) |
常用日期类型转化格式化模式字符串规则
select to_char(NOW(),'yy-mm-dd') as time
select to_char(NOW(),'YYYY-MM-DD') as time
select to_char(NOW(),'YYYY-MM-DD HH:MI:SS') as time
select to_char(NOW(),'YYYY-MM-DD HH24:MI:SS') as time
注:模式格式不区分大小写
日期类型转字符串
---获取年
select to_char(NOW(),'yyyy') as year;
---获取月
select to_char(NOW(),'mm') as month;
---获取日
select to_char(NOW(),'dd') as day;
---获取时
select to_char(NOW(),'hh24') as hour;
---获取分
select to_char(NOW(),'mi') as minute;
---获取秒
select to_char(NOW(),'ss') as second;
---获取年-月-日 时:分:秒
select to_char(NOW(),'yyyy-mm-dd hh:mi:ss') as ymd;
timestamp日期类型转date和time
SELECT now()::timestamp; SELECT now()::time; SELECT now()::date;
注:timestamp和time类型默认是去掉时区的如果要加上时区则
SELECT now()::timestamp with time zone; SELECT now()::time with time zone;
SELECT now()::time(0); SELECT now()::timestamp(0) with time zone;
注:timestamp和time类型中精度范围是1~6,就是小数点后面保留几位,0表示去掉小数点
1表示保留小数点后一位
SELECT now()::time(1); SELECT now()::timestamp(1);
current_timestamp、localtimestamp、localtime类型转化要求
select current_timestamp::timestamp(0);
select localtimestamp::timestamp(0);
select localtimestamp::time(0);
select localtimestamp::date;select localtime::time;
注:因为timestamp类型含有年月日时分秒,因此current_timestamp、localtimestamp可以转化成timestamp、date及time
而localtime类型只含有时分秒及精度值只能转成time不能转timestamp、date
总结:
1.postgresql中日期类型后双冒号(::)表示类型转化的意思
::date表示转化为date类型日期
::time表示转化为time类型日期
::timestamp表示转化为timestamp类型日期
2.::timestamp(0)表示时间去掉小数点
::timestamp(1)表示时间保留小数点一位
::time(0)表示时间去掉小数点
::time(1)表示时间保留小数点一位
::timestamp(p)和time(p)中p的范围是1~6