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

问题描述:

我在proc中有一年参数,可以是2017,2018等。Oracle日期 - 获得给定年份的1月1日

我想在Oracle服务器的日期格式中获得当年1月1日。

有没有办法做到这一点?

+0

你在哪里存储年份(变量,表格,参数...)?你需要做什么(一个简单的查询,一个过程,...)?你到目前为止尝试过什么? – Aleksej

+0

我把它作为proc中的一个参数 – Yogesh

+0

参数(number,varchar,...)是什么类型?你需要做什么:你需要打印价值吗?在OUT参数中使用它?插入某个表中,?另外,请发布您的代码。 – Aleksej

您可能需要类似:

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; 

假设你的参数是P_year ...

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

一年只需转换为日期会做的伎俩

SQL> select to_date('2017','YYYY') from dual; 

TO_DATE('2017','YYY 
------------------- 
01/01/2017 00:00:00 

但是如果你担心在某个阶段这个默认值可能会改变,那么你也可以将数据截断为年份为absol非常确定

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;