Oracle日志:trunc日期的使用
一 .功能
用于处理日期返回指定格式或者所需要指定的值
二. 语法格式
trunc(date,param)
date:日期数据
param:指定的格式,缺省的代表是当天的0点
三.样例
trunc(date)缺省的使用
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') "系统当前时间",
to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss') "当天的凌晨12."
from dual t;
Ps:这里的dual是oracle的系统表,常吧它称为伪表,具体的用途点这里点这里
返回当年的第一天
select to_char(trunc(sysdate, 'yy'),'yyyy-mm-dd') "当年第一天" from dual;
select to_char(trunc(sysdate, 'yyyy'),'yyyy-mm-dd') "当年第一天" from dual;
select to_char(trunc(sysdate, 'year'),'yyyy-mm-dd') "当年第一天" from dual;
季度相关
tips:一年有四个季度,也就是没三个月称之为一个季度
select to_char(trunc(sysdate, 'q'),'yyyy-mm-dd') "当前季度的第一天" from dual;
那如果我想要看当前季度的最后一天的日期的话,那就只要加三个月就是下个季度啦,然后再减一天或者减一个小时就能显示当个季度的最后一天,同理查看任何季度都能用这个方法
select to_char(trunc(add_months(sysdate,3),'q')-1,'yyyy-mm-dd hh24:mi:ss') "当前季度的最后一天" from dual;
查看上个季度最后一天的23.30分
--因为日期的单位是按照天来算的,所以如果要将其转换为分钟数要对其相应的单位换算:一天有24个小时,所以半个小时也就是30分钟则为0.5/24*60
select to_char(trunc(sysdate,'q')-0.5/24,'yyyy-mm-dd hh24:mi:ss') "上个季度的最后一天" from dual;
月份相关
返回当前月第一天
select to_char(trunc(sysdate,'m'),'yyyy-mm-dd ') "当前月第一天" from dual;
select to_char(trunc(sysdate,'month'),'yyyy-mm-dd ') "当前月第一天" from dual;
查看当前月的最后一天
--查看当前月最后一天可以用last_day函数
select to_char(trunc(last_day(sysdate)),'yyyy-mm-dd ') "当前月最后一天" from dual;
周数相关
返回当前周的第一天,星期天为第一天
ps:菜鸡我的当前系统时间为2020.7.14 星期二
select to_char(trunc(sysdate,'d'),'yyyy-mm-dd ') "本周的第一天" from dual;
select to_char(trunc(sysdate,'day'),'yyyy-mm-dd ') "本周的第一天" from dual;
查看下个星期五的日期
--next_day:返回下一个星期几的日期,这里第一天代表的是星期天,所以星期五就是第六天了
select to_char(next_day(trunc(sysdate,'d')+7,6),'yyyy-mm-dd ') "下周星期五" from dual;
小时相关
select to_char(trunc(sysdate,'hh'),'yyyy-mm-dd hh24.') "当前小时" from dual;
select to_char(trunc(sysdate,'hh24'),'yyyy-mm-dd hh24.') "当前小时" from dual;
分钟相关
select to_char(trunc(sysdate,'mi'),'yyyy-mm-dd hh24.mi') "当前分钟" from dual;
总结
总的来说trunc函数能用来处理日期,比如显示年份的第一天,月份的第一天,然后使用add_months,last_day,next_day等函数和进行一些数值的相应转换就能得到相关的日期了