to_char()函数 to_date()函数

    日期转换函数:
    日期转换成字符串:
    to_char(字段名, ’字符串格式’)  
    
    =>  to_date()
    sql> select * from emp where dates between to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')
            and to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss');


        SQL中不区分大小写,Oracle的SQL采用了mi代替分钟。  

    sql> select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;  
        
        当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。
        同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。
        但是如果忽略MM参数,Oracle并不会取整到年,而是取整到当前月。
        
        -> 以24小时的形式显示出来要用HH24    sql> select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;
    
    (1) 取得当前日期是一个星期中的第几天(星期日是第一天)
        SQL> select sysdate,to_char(sysdate,'D') from dual;   
    
        SYSDATE     T   
        ---------   -   
        27-MAR-03   5
        
        其他类似:
        select to_char(sysdate,'yyyy') from dual;   --年   
        select to_char(sysdate,'Q' from dual;       --季   
        select to_char(sysdate,'mm') from dual;     --月   
        select to_char(sysdate,'dd') from dual;     --日   
        ddd   年中的第几天   
        WW    年中的第几个星期   
        W     该月中第几个星期   
        D     周中的星期几   
        hh    小时(12)   
        hh24  小时(24)   
        Mi    分   
        ss    秒
        
        SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') example from dual;   
        结果集:
        example  
        -----------------------  
        20030327   4   18:16:09
    
    (2) 取当前日期是星期几中文显示:
        SQL> select to_char(sysdate,'day') from dual;   
    
        TO_CHAR(SYSDATE,'DAY')   
        ----------------------   
        星期四
    
    (3) 如果一个表在一个date类型的字段上面建立了索引,如何使用
        alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'


    (4) 得到当前的日期
        SQL> select sysdate from dual;

    (5) 得到当天凌晨0点0分0秒的日期
        SQL> select trunc(sysdate) from dual;
        -- 得到这天的最后一秒
        SQL> select trunc(sysdate) + 0.99999 from dual;
        -- 得到小时的具体数值
        SQL> select trunc(sysdate) + 1/24 from dual;
        SQL> select trunc(sysdate) + 7/24 from dual;

    (6)得到明天凌晨0点0分0秒的日期
        SQL> select trunc(sysdate+1) from dual;
        SQL> select trunc(sysdate)+1 from dual;

    (7) 本月一日的日期
        SQL> select trunc(sysdate,'mm') from dual;

    (8) 得到下月一日的日期
        SQL> select trunc(add_months(sysdate,1),'mm') from dual;

    (9) 返回当前月的最后一天?
        SQL> select last_day(sysdate)  from dual;        
        SQL> select last_day(trunc(sysdate))  from dual;  
        SQL> select trunc(last_day(sysdate))  from dual;
        SQL> select trunc(add_months(sysdate,1),'mm') - 1 from dual;
    
    (10) 得到一年的每一天
        SQL> select trunc(sysdate,'yyyy')+ rn -1 date0 
                from 
                (select rownum rn from all_objects 
                where rownum<366);

    (11) 今天是今年的第N天
        SQL> SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;

    (12) 如何在给现有的日期加上2年
        SQL> select add_months(sysdate,24) from dual;

    (13)判断某一日子所在年分是否为润年 
        SQL> select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;

    (14) 判断两年后是否为润年
        SQL> select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','闰年','平年') from dual;

    (15) 得到日期的季度
        SQL> select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;
        SQL> select to_char(sysdate, 'Q') from dual;

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值