2017-01-23 201 views
-3

我在proc中有一年參數,可以是2017,2018等。Oracle日期 - 獲得給定年份的1月1日

我想在Oracle服務器的日期格式中獲得當年1月1日。

有沒有辦法做到這一點?

+0

你在哪裏存儲年份(變量,表格,參數...)?你需要做什麼(一個簡單的查詢,一個過程,...)?你到目前爲止嘗試過什麼? – Aleksej

+0

我把它作爲proc中的一個參數 – Yogesh

+0

參數(number,varchar,...)是什麼類型?你需要做什麼:你需要打印價值嗎?在OUT參數中使用它?插入某個表中,?另外,請發佈您的代碼。 – Aleksej

回答

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

假設你的參數是P_year ...

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

一年只需轉換爲日期會做的伎倆

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 
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; 
相關問題