Oracle中关于时间的转换

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


 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; 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值