在PL / SQL中使用日期

时间:2016-12-17 15:19:50

标签: oracle plsql

我是使用PL / SQL的新手,我已经创建了一个程序,但我无法弄清楚正确的语法以获取当前月份和年份的数据以及另一个光标来准确获取数据1前一年:

create or replace procedure data(acc integer, month integer, year integer)
as


Cursor c1 is 
select usage
from bill
where account =acc_num and to_char(BILL_DATE, 'MM-YYYY') = 'month-year';


Cursor c3 is 
select usage
from bill
where account =acc_num and
     to_char(BILL_DATE, 'MM-YYYY') = 'month-year' - 1;

**我明白这只是代码的一部分,但我相信我的逻辑几乎完全可以找到我想要的数据。使用PLSQL

1 个答案:

答案 0 :(得分:2)

我认为你正在寻找这样的东西:

select usage
from bill
where account = in_account and
      extract(year from bill_date) = in_year and
      extract(month from bill_date) = in_month;

如果要比较年份和月份(以整数形式传递),只需从日期中提取这些属性。

如果您正在学习PL / SQL,请学习命名参数和参数,以便将它们与列区分开来:

create or replace procedure data (
    in_account integer,
    in_month integer,
    in_year integer
) as
begin
    . . .

(和"数据"是一个非常好奇的存储过程名称。我希望名字中有一个动词。)