Oracle数据库之SQL单行函数---to_date to_char

           上文中提到了to_date函数,并且对其也有相关的使用操作。这篇文章就to_date和to_char做

     一些总结。

        日期显示格式

                    首先看看其对于日期显示的格式问题我们直接以一个实例为例("2013/4/5 19:35:35")

                  Year:

                     yy:表示显示两位年         显示13

                     yyy:显示三位年               显示013

                     yyyy:显示四位年             显示2013

                  Month

                      mm:表示两位月           显示04

                      mon:字符集表示          显示APR(英文缩写)

                      month:字符集表示      显示APRIL(英文全写)

                  Day

                       dd     number类型  当月第几天   显示05

                       ddd   number类型  当年第几天   显示095

                       dy :字符集   当周第几天简写      显示fri,中文版为星期五

                       day :字符集  当周第几天全写     显示friday,中文版为星期五

                       ddspth:字符集  当周第几天全写      显示为fifth

                  Hour

                         hh : 两个数字       12小时进制    显示07

                         hh24: 两个数字     24小时进制    显示19

                  Minute

                         mi : 两个数字   60进制    显示35

                  second

                         ss : 两个数字    60进制    显示35

                  Q:显示季度     显示为2

                  WW :当年第几周   显示为14

                  W: 当月第几周    显示1

                  以上基本将日期的格式说完了,肯定会存在遗漏,遇到之后再慢慢完善!

      TO_DATE()

                to_date是将字符串或者数字转换为日期

      TO_CHAR()

               to_char是将日期按照指定的格式转换为字符串

           至于其具体用法,直接给出一些实例,在实战中学习

       例子:

                    1、to_date  to_char用法   

             --日期格式转换为字符串
             select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') AS nowTime from dual;
             --获取日期的年,至于月、日等就不演示了
             select to_char(SYSDATE,'yyyy') as nowYear FROM dual;
             --将字符查转换为日期
             select TO_DATE('2012/04/25 09:24:25','yyyy/mm/dd hh:mi:ss') from dual;
                    2、求某天是星期几               
             select to_char(to_date('2012-04-05 09:24','yyyy-mm-dd hh:mi:ss'),'day')
                   from dual;
                         
                    3、设置会话语言 
             select TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
                    from dual;
                    4、计算两个日期之间的天数

             select floor(sysdate- to_date('2002-08-26', 'YYYY-mm-dd')) FROM DUAL;
                    5、时间为null的使用

             select to_date(NULL) from dual;
                    6、是否在一个时间段中
             select  *from emp where hiredate between to_date('20011201','yyyymmdd')
                 and to_date('20011231','yyyymmdd');
                    7、查找2002-02-28至2002-02-01间除星期一和七的天数  
             select count(*) from 
                 ( 
                     select rownum-1 rnum      
                     from all_objects      
                     where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-      
                     02-01','yyyy-mm-dd')+1      
                  )      
               where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )      
               not in ( '1', '7' );
                     8、计算一段时间的月份数
               select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1996',
               'MM-DD-YYYY')) "MONTHS" FROM DUAL; 
                     9、年月日的处理
               select older_date,      
                 newer_date,      
                 years,      
                 months,      
                 abs(      
                    trunc(      
                    newer_date-      
                    add_months( older_date,years*12+months )      
                    )      
                  ) days 
       
              from ( select      
                 trunc(months_between( newer_date, older_date )/12) YEARS,      
                 mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,      
                 newer_date,      
                older_date      
              from ( 
                 select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date      
                 from emp 
               )      
             );
                          

                     10、处理月份天数不定的方法

                select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),
                  last_day(sysdate) from dual;
                     11、找出今年的天数

                select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual   
                     12、计算小时、分、毫秒

              select      
                   Days,      
                   A,      
                   TRUNC(A*24) Hours,      
                   TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,      
                   TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,      
                   TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds      
              from      
               (      
                 select      
                 trunc(sysdate) Days,      
                 sysdate - trunc(sysdate) A      
                 from dual      
              ) ;
                      

                  ok!练习就到这里吧!




                

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值