宏函数prompt()中date类型的参数如何设置默认值?

我在宏函数里定义了两个参数STARTDATE和ENDDATE,T.DAYCODE为date类型,我想给这两个参数各自设置一个默认值,STARTDATE默认值为当前系统日期往前推7天,ENDDATE默认值为当前系统日期,验证SQL时报错,报错请看截图,我的数据库为Oracle,哪位大神帮解决一下,谢谢!SELECT B.USERNAME, ...显示全部
我在宏函数里定义了两个参数STARTDATE和ENDDATE,T.DAYCODE为date类型,我想给这两个参数各自设置一个默认值,STARTDATE默认值为当前系统日期往前推7天,ENDDATE默认值为当前系统日期,验证SQL时报错,报错请看截图,我的数据库为Oracle,哪位大神帮解决一下,谢谢!

SELECT B.USERNAME,
       T.USERCODE,
       C.TYPENAME1 AS TASKTYPENAME,
       C.TYPECODE1 AS TASKTYPECODE,
       SUM(NVL(T.REALWORKTIME * (T.PROPORTION / 100), 0)) AS WORKTIME
  FROM F_WORKREPORT T, D_USER B, D_TASKTYPE C
WHERE T.TASKTYPECODE = C.TASKTYPECODE
   AND T.USERCODE = B.USERCODE
   AND C.TASKTYPECODE <> '19'
   AND (to_char(T.DAYCODE,'yyyy-mm-dd') BETWEEN #prompt('STARTDATE','string',to_char((sysdate-7),'yyyy-mm-dd'))# AND #prompt('ENDDATE','string',to_char((sysdate),'yyyy-mm-dd'))#)
GROUP BY
          B.USERNAME,
          T.USERCODE,
          C.TYPENAME1,
          C.TYPECODE1


另外,我把条件AND (to_char(T.DAYCODE,'yyyy-mm-dd') BETWEEN #prompt('STARTDATE','string',to_char((sysdate-7),'yyyy-mm-dd'))# AND #prompt('ENDDATE','string',to_char((sysdate),'yyyy-mm-dd'))#)改为N种写法:
1、T.DAYCODE BETWEEN to_date(#prompt('STARTDATE','string',to_char((sysdate-7),'yyyy-mm-dd'))#,'yyyy-mm-dd')
      AND to_date(#prompt('ENDDATE','string',to_char((sysdate),'yyyy-mm-dd'))#,'yyyy-mm-dd')



2、T.DAYCODE BETWEEN #prompt('STARTDATE','date',to_date(to_char(sysdate-7,'yyyy-mm-dd'),'yyyy-mm-dd'))# AND #prompt('ENDDATE','date',to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'))#


还是验证不通过。收起
参与8

查看其它 5 个回答zhonghanquan的回答

zhonghanquanzhonghanquan业务部门经理信和汇诚
回复 2# 流淌Wow


   好的,我先试一下,谢谢啊!
互联网服务 · 2015-03-12
浏览1896

回答者

zhonghanquan
业务部门经理信和汇诚
擅长领域: 大数据商业智能服务器

zhonghanquan 最近回答过的问题

回答状态

  • 发布时间:2015-03-12
  • 关注会员:1 人
  • 回答浏览:1896
  • X社区推广