1 select name,length(name) from user;
运行后得到:
name    length(name)
admin       6
de          2但是 我的表原来是以下这样的:
id   name
1    de
2    admin请问可否改为运行后的结果如下;
name    length(name)
de           2
admin        6
2 begin
  dbms_output.put_line(sysdate);
  end;
 运行后结果为
12-12月-10  begin
  dbms_output.put_line(to_char(round(sysdate,'mm')));
  end;
 运行后结果为:
01-12月-10
请问01-12月-10是怎么得出来的呢?谢谢

解决方案 »

  1.   

    1、
    select name,length(name) from user order by id; 
    2、round() 四舍五入 月份以15日为界分为上半月和下半月--今天是12 12号 (上半月) 四舍五入到月话就是 12 01
    scott@YPCOST> select round(sysdate,'mm') from dual;ROUND(SYSDATE,'MM')
    -------------------
    2010-12-01 00:00:00--12 16 号 (下半月) 四舍五入到月的话 就是下一个月 2011 01 01
    scott@YPCOST> select round(sysdate+4,'mm') from dual;ROUND(SYSDATE+4,'MM
    -------------------
    2011-01-01 00:00:00scott@YPCOST> select sysdate+4,round(sysdate+4,'mm') from dual;SYSDATE+4           ROUND(SYSDATE+4,'MM
    ------------------- -------------------
    2010-12-16 15:13:38 2011-01-01 00:00:00scott@YPCOST> select sysdate+3,round(sysdate+3,'mm') from dual;SYSDATE+3           ROUND(SYSDATE+3,'MM
    ------------------- -------------------
    2010-12-15 15:14:04 2010-12-01 00:00:00
      

  2.   

    --round 与trunc的区别 
    scott@YPCOST> select trunc(sysdate,'mm') from dual;TRUNC(SYSDATE,'MM')
    -------------------
    2010-12-01 00:00:00scott@YPCOST> select trunc(sysdate+4,'mm') from dual;TRUNC(SYSDATE+4,'MM
    -------------------
    2010-12-01 00:00:00
      

  3.   

    1、oracle普通表是堆表,存储的数据是没有顺序的。如果要保证查询出来的顺序,使用order by。
    select name,length(name) from user order by id;2、两种方法,使用to_char直接转换后输出,或者使用sql*plus命令设置输出日期格式
    SQL> exec dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
    2010-12-12 15:31:20
    PL/SQL 过程已成功完成。SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
    会话已更改。SQL> exec dbms_output.put_line(sysdate);
    2010-12-12 15:31:45
    PL/SQL 过程已成功完成。
      

  4.   

    1.select name,length(name) from user order by name desc;
    2.多于15天算一个月嘛。。少于就不算。。