Oracle Date - 获得给定年份的1月1日

时间:2017-01-23 16:50:27

标签: oracle oracle11g date-arithmetic

我有一年作为proc的参数,可以是2017,2018等。

我希望在oracle服务器中以日期格式获得当年1月1日。

有没有办法做到这一点?

4 个答案:

答案 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;