select to_number(trim(to_char(datefiled,'hh'))) from dual

解决方案 »

  1.   

    SQL> select to_number(to_char(sysdate-1.5,'hh24')) from dual;TO_NUMBER(TO_CHAR(SYSDATE-1.5,'HH24'))
    --------------------------------------
                                         4SQL> select to_number(to_char(sysdate,'hh24')) from dual;TO_NUMBER(TO_CHAR(SYSDATE,'HH24'))
    ----------------------------------
                                    16SQL> declare
      2  num1 number(10):=0;
      3  num2 number(10):=0;
      4  begin
      5  select to_number(to_char(sysdate,'hh24')) into num1 from dual;
      6  select  to_number(to_char(sysdate-1.5,'hh24')) into num2 from dual;
      7  dbms_output.put_line(num1+num2);
      8  end;
      9  /
    20PL/SQL procedure successfully completed.SQL>
      

  2.   

    SQL> select to_number(to_char(sysdate-1.5,'hh24')) from dual;TO_NUMBER(TO_CHAR(SYSDATE-1.5,'HH24'))
    --------------------------------------
                                         4SQL> select to_number(to_char(sysdate,'hh24')) from dual;TO_NUMBER(TO_CHAR(SYSDATE,'HH24'))
    ----------------------------------
                                    16SQL> declare
      2  num1 number(10):=0;
      3  num2 number(10):=0;
      4  begin
      5  select to_number(to_char(sysdate,'hh24')) into num1 from dual;
      6  select  to_number(to_char(sysdate-1.5,'hh24')) into num2 from dual;
      7  dbms_output.put_line(num1+num2);
      8  end;
      9  /
    20PL/SQL procedure successfully completed.SQL>
      

  3.   

    一般情况下oracle自动进行字符与整形的互相转换的
    如:
    SQL> select to_char(sysdate,'hh24')-10 from dual;TO_CHAR(SYSDATE,'HH24')-10
    --------------------------
                             7已用时间:  00: 00: 00.40
    SQL> select 24||'b' from dual;24|
    ---
    24b已用时间:  00: 00: 00.50
    SQL>
      

  4.   

    to_number(to_char(datefiled, 'hh'))
      

  5.   

    select to_char(datefiled, 'hh24') - 1 from dual;
     
    TO_CHAR(SYSDATE,'HH24')-1
    -------------------------
                           9