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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示