Oracle 日期 - 获取给定年份的 1 月 1 日

Oracle Date - Get 1 Jan of given year

我在 proc 中将年份作为参数,可以是 2017、2018 等

我想在 oracle 服务器中以日期格式获取当年的 1 月 1 日。

有什么办法吗?

假设你的参数是P_year...

TO_DATE('01/01/'||P_year,'DD/MM/YYYY')

您可能需要这样的东西:

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;

只需将年份转换为日期就可以了

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

如上所述,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;