【问题标题】:retrieving last two years data from current sysdate从当前 sysdate 检索过去两年的数据
【发布时间】:2013-03-29 11:37:28
【问题描述】:

您好,我被困在一个 oracle 查询中,我想根据当前年份检索前两年的数据,比如 2013 年,所以我想检索 2011 年和 2012 年的所有记录,我已经完成了以下查询,但是 m卡在日期格式上我对 oracle 还是很陌生 这是查询

Select 
to_date(stage_end_date,'yy') Years,SUBPRODUCT Product,sum(OFFER_COUNT) SumCount
    ,sum(offer_amount)SumAmount
from stage_amt  
and 
Offer_amount !=0 
and 
to_date(stage_end_date,'yy')
between to_char( sysdate, -2 ) and to_char( sysdate)
group by to_date(stage_end_date,'yy'),SUBPRODUCT
order by Years asc;

我收到此错误 ORA-00932: 不一致的数据类型: 预期的 DATE 得到了 NUMBER 00932. 00000 - “不一致的数据类型:预期的 %s 得到了 %s” 任何人都可以帮我做什么

问候

【问题讨论】:

  • stage_end_date是什么数据类型
  • 那你为什么要用to_date()呢? to_date() 将字符值转换为日期值。当你已经一个日期时使用它是没有用的。
  • 对不起,在原来的查询中我不得不 to_char 我想我可能已经把我正在做研发的查询放在上面,但它帮助我学习新的东西这样的错误

标签: sql oracle


【解决方案1】:

这个怎么样?

where stage_end_date >= trunc(sysdate, 'yyyy') - interval '2' year
  and stage_end_date <  trunc(sysdate, 'yyyy');

【讨论】:

    【解决方案2】:

    使用 sysdate 您正在应用 to_char 函数,但给出的日期格式不正确 -

    我相信 stage_end_date 是一个日期列,如果是这样,我认为您需要在 select 查询中使用 to_char 函数代替 to_date ...试试下面的查询 -

    Select To_Char(stage_end_date,'yy') Years,
           SUBPRODUCT Product,
           sum(OFFER_COUNT) SumCount,
           sum(offer_amount)SumAmount
    from stage_amt  
    where Offer_amount !=0 
      and to_number(To_char(stage_end_date,'YYYY')) between 
          to_number(to_char( sysdate,'YYYY'))-2 and to_number(to_char(sysdate,'YYYY'))
    group by to_char(stage_end_date,'yy'),
             SUBPRODUCT
    order by Years asc;
    

    虽然 Oracle 在比较时会注意或将数据从字符串转换为数字,但为了更安全,我还在比较日期时编写了 TO_NUMBER 函数。

    【讨论】:

    • 您好,感谢您的答复只想要 2011 年的数据或 2010 年的数据 什么是查询
    • @Oraclerookie 这取决于您的系统日期,假设您的系统日期与今天 2013 年 4 月 8 日相同,那么您需要将 where 子句中的第二个条件更改为 'and to_number(To_char(stage_end_date,' YYYY')) = to_number(to_char( sysdate,'YYYY'))-2' (对于 2011 年的记录)等等其他结果。基本上这种情况你需要根据你的要求思考和写作。
    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2018-11-04
    • 2021-07-21
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多