您的位置:首页 > 数据库 > Oracle

Oracle中关于时间的转换

2008-01-21 16:09 323 查看
上了小半年的班了,做的东西差不多都忘了,以后应该经常总结一下,方便自己以后查寻。今天先总结一下我在写存储过程中遇到的时间日期的问题:

 1. date型的值与number型的值做运算,结果是date型,单位是天。
 
 2. 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;   --日  
    select to_char(sysdate,'ddd')  from dual;   --年中的第几天
    select to_char(sysdate,'ww')   from dual;   --年中的第几周
    select to_char(sysdate,'dd')   from dual;   --该月中的第几周
    select to_char(sysdate,'d')    from dual;   --该周中的第几天(周日是第一天)
    select (mod(to_number(to_char(sysdate,'d'))+6,8) +  round((to_number(to_char(sysdate,'d'))+6)/8))from dual; --该周中的第几天(周一是第一天)
    select to_char(sysdate,'day')  from dual;   --星期几
    select to_char(sysdate,'hh')   from dual;   --小时12
    select to_char(sysdate,'hh24') from dual;   --小时24
    select to_char(sysdate,'mi')   from dual;   --分
    select to_char(sysdate,'ss')   from dual;   --秒

 

 3. oracle 中的数据转换问题:
    to_number(字符型),
    to_date(字符型,'yyyy/mm/dd'), 或是其他的date_fomat.如yyyy-mm-dd hh24:mi:ss
    to_char(数字型),
    to_char(日期型,'yyyymmddhh24miss')

 

 4. 如果用number型的值来代表时间(如231234代表23:12:34, 3456代表00:34:56)
    当0点几分几秒时在把number转换成date时,就会出问题,
    我的解决办法:将此时间+1000000,然后取第2到第7位,再转换成date型就不会出错了。测试如下
      select to_char(to_date(substr(1000000 + 时间的NUMBER型 值,2,7),' hh24miss'), 'hh24miss') from dual; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle date 测试 存储