我传入一个时间 
select to_date(to_char(sysdate,'yyyy-mm-dd '),'yyyy-mm-ddd') from dual;
这样的操作是错误的
 我就是想得到传入的时间 
 最后转化为 2010-3-31 这样的格式 小时分钟 全部默认为0
应该怎么写 像我那样写法好像是错的.

解决方案 »

  1.   

    create or replace procedure emp_proc(i_fromdate varchar2, i_todate varchar2,o_cur out sys_refcursor)
    is
    begin
      open o_cur for 'select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp where hiredate>=to_date(:i_fromdate,''YYYY-MM-DD'') and hiredate<to_date(:i_todate,''YYYY-MM-DD'')+1'
      using i_fromdate, i_todate;
    end;
    /var o_cur refcursor;
    exec emp_proc('1981-01-01','1981-12-31',:o_cur);
    print o_cur;
      

  2.   

    -- 时间参数,在存储过程中一般以指定日期格式的字符串形式传入,
    -- 然后在SQL语句中用to_date()函数转换一下
    -- 看我上面的例子!
      

  3.   

    -- 当然,也可以直接用date类型作为传入参数,这样在执行存储过程时,先将将要传入的指定格式的日期字串转换为真正的日期类型,
    -- 示例如下:
    create or replace procedure emp_proc(i_fromdate date, i_todate date, o_cur out sys_refcursor)
    is
    begin
      open o_cur for 'select empno, ename, job, mgr, hiredate, sal, comm, deptno from emp where hiredate>=:i_fromdate and hiredate<:i_todate+1'
      using i_fromdate, i_todate;
    end;
    /var o_cur refcursor;
    exec emp_proc(to_date('1981-01-01','yyyy-mm-dd'),to_date('1981-12-31','yyyy-mm-dd'),:o_cur);
    print o_cur;
      

  4.   

    select to_date(to_char(sysdate,'yyyy-mm-dd '),'yyyy-mm-ddd') from dual;'yyyy-mm-ddd' 多了个d
      

  5.   

    -- 别蛋疼: dd后面没有空格,具体某一天,只有两位(dd):
    select to_date(to_char(sysdate,'yyyy-mm-dd '),'yyyy-mm-ddd') from dual;-- 修改为:
    select to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd') from dual;-- 闲的蛋疼,就去妓院,别来这里瞎扯!
      

  6.   

    trunc(SYSDATE,'dd')就行了吧  这个方法是对的。。 谢谢select to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd') from dual; 这种写法是不对的
       谢谢 大家
      

  7.   

    -- trunc()对日期类型的截断非常有用:
    -- 今年的第一天:
    select trunc(sysdate,'yyyy') from dual;-- 本月的第一天:
    select trunc(sysdate,'mm') from dual;-- 本周的第一天:
    select trunc(sysdate,'day') from dual;-- 今天的0点:
    select trunc(sysdate,'dd') from dual;
      

  8.   

    -- 同理(上个月的第一天)
    select add_months(trunc(sysdate,'mm'),-1) from dual;-- 同理(去年的第一天)
    select add_months(trunc(sysdate,'yyyy'),-12) from dual;