我有一年作为proc的参数,可以是2017,2018等。
我希望在oracle服务器中以日期格式获得当年1月1日。
有没有办法做到这一点?
答案 0 :(得分:2)
假设你的参数是P_year ......
TO_DATE('01/01/'||P_year,'DD/MM/YYYY')
答案 1 :(得分:2)
您可能需要以下内容:
create or replace procedure checkDate ( pYear IN number) is
vNum number;
begin
select count(1)
into vNum
from ( select sysdate as dateColumn from dual) someTable
where dateColumn > to_date('01-01-' || pYear, 'dd-mm-yyyy');
--
dbms_output.put_line(vNum);
end;
答案 2 :(得分:1)
简单地将一年转换为日期就可以了解
SQL> select to_date('2017','YYYY') from dual;
TO_DATE('2017','YYY
-------------------
01/01/2017 00:00:00
但如果您担心在某个阶段此默认值可能会发生变化,您也可以将数据截断到年份以确保
SQL> select trunc(to_date('2017','YYYY'),'YYYY') from dual;
TRUNC(TO_DATE('2017
-------------------
01/01/2017 00:00:00
答案 3 :(得分:0)
如上所述,TRUNC最适合这种情况。
SET define ON;
SET serveroutput ON;
DECLARE
lv_var VARCHAR2(100):='&Enter_year';
lv_date DATE;
begin
SELECT TRUNC(to_date(lv_var,'YYYY')) INTO lv_date FROM dual;
dbms_output.put_line(lv_date||' --> Req date');
END;