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;
我在 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;