oracle时间格式(to_char、trunc函数的使用)

一、时间格式

oracle里的系统时间是sysdate,是date类型,执行select sysdate from dual,得到yyyy/mm/dd hh24:mi:ss形式的时间(这个需要配置NLS_DATE_FORMAT),oracle不区分大小写。dual表是oracle实际存在的表,为了语法完整需要执行from dual。hh24代表24小时进制的时,如果没有24就是12小时进制的时,mi代表分钟(minute),不用mm代表分钟是因为mm已代表月份,ss代表秒数。

select sysdate from dual;  //如果返回的是31-OCT-22,说明nls_date_format 是 DD-MON-RR格式,为了方便查看可以设置成YYYY-MM-DD格式
alter session set nls_date_format = 'YYYY-MM-DD';
select sysdate from dual;

select sysdate,to_char(sysdate,'YYYY')YYYY,to_char(sysdate,'YEAR')YEAR,to_char(sysdate,'YYY')YYY,to_char(sysdate,'YY')YY from dual;
//查看不同表达式显示的结果,其中YEAR返回英文的20 222,即TWENTY TWENTY-TWO

注意:这里测试sysdate的时间变成2022-11-01

select sysdate,to_char(sysdate,'MM')MM,to_char(sysdate,'MON')MON,to_char(sysdate,'MONTH')MONTH from dual; 
select parameter,value from nls_session_parameters where parameter='NLS_DATE_LANGUAGE';  //查看语言是美国字符集

上面的更正,DAY是英文显示全部;DY是显示前三位。

select sysdate,to_char(sysdate,'DDD')DDD,to_char(sysdate,'DD')DD,to_char(sysdate,'D')D,to_char(sysdate,'DAY')DAY,to_char(sysdate,'DY')DY from dual;

alter session set nls_date_format = 'YYYY-MM-DD hh:mi:ss';
select sysdate,to_char(sysdate,'hh')hh,to_char(sysdate,'hh24')hh24,to_char(sysdate,'mi')mi,to_char(sysdate,'ss')ss from dual;

alter session set nls_date_format = 'YYYY-MM-DD';
select sysdate,to_char(sysdate,'q')q,to_char(sysdate,'w')w,to_char(sysdate,'ww')ww from dual;

 

二、to_char函数

可以将日期转换成相应的时间格式,类型是char,to_char(date,'fomat') from dual,这里的format就是上面的时间格式

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss q:ww:w') from dual;  //输出年月日时分秒季度周

 

三、trunc函数

用于截取时间或数值,返回指定的值

1、截取年份,显示当年第一天

select sysdate,trunc(sysdate,'yyyy')yyyy,trunc(sysdate,'year')year,trunc(sysdate,'yyy')yyy,trunc(sysdate,'yy')yy,trunc(sysdate,'y')y from dual;

2、截取月份,显示当月第一天

select sysdate,trunc(sysdate,'mm')mm,trunc(sysdate,'mon')mon,trunc(sysdate,'month')month from dual;

3、截取到日,显示当日0点0分0秒(注:D、DAY、DY显示的是当周第一天的0点0分0秒)

 select sysdate,trunc(sysdate,'ddd')ddd,trunc(sysdate,'dd')dd,trunc(sysdate,'d')d,trunc(sysdate,'day')day,trunc(sysdate,'dy')dy from dual;

4、截取到时,显示当日小时的0分0秒

select sysdate,trunc(sysdate,'hh')hh,trunc(sysdate,'hh24')hh24 from dual;

5、截取到分,显示当日时分的0秒

 select sysdate,trunc(sysdate,'mi')mi from dual;

posted @ 2021-09-25 20:51  微风徐徐$  阅读(7898)  评论(0编辑  收藏  举报