簡體   English   中英

PL / SQL函數將SYSDATE添加+7天

[英]PL/SQL function to add +7 days to SYSDATE

我們應該創建一個將當前SYSDATE添加+7天並寫入時間和分鍾的函數,但是,我的代碼僅顯示日期,而不顯示時間。 我究竟做錯了什么? 這可能很容易,但是我無法弄清楚,Internet上也沒有太多幫助。

到目前為止,我已經嘗試過:

CREATE OR REPLACE FUNCTION get_date(n IN NUMBER) 
RETURN DATE AS
BEGIN
  RETURN to_date(to_char(SYSDATE, 'DD.MM.YYYY HH24:MI'),'DD.MM.YYYY HH24:MI') + n;
END get_date;
/

因此,當您寫時(7是提前天數):

SELECT get_date(7)
FROM dual;

其結果是這樣的:

GET_DATE(7)
----------------
09.03.2016 

但是,如您所見,結果中不包含時間,這就是我在這種情況下需要的時間。 任何幫助將不勝感激。 我敢肯定我只是盲目看不到它,但是現在我盯着這段代碼已經太久了,我承認自己會失敗。

您必須將結果格式化為您的規范,例如

--create the function  
CREATE OR REPLACE FUNCTION get_date(n IN NUMBER) 
RETURN DATE AS
BEGIN
  RETURN SYSDATE + n;
END get_date;

--call the function
SELECT TO_CHAR(get_date(7), 'DD.MM.YYYY HH24:MI')
FROM dual;

或您對功能之外不進行格式化的新要求

--create the function  
CREATE OR REPLACE FUNCTION get_date(n IN NUMBER) 
RETURN VARCHAR2 AS
BEGIN
  RETURN TO_CHAR(SYSDATE + n,'DD.MM.YYYY HH24:MI');
END get_date;

--call the function
SELECT get_date(7)
FROM dual;

您可以決定是否要讓函數返回datevarchar 您可以根據需要選擇以下方式之一:

CREATE OR REPLACE FUNCTION get_date(n IN NUMBER) 
RETURN varchar2 AS
BEGIN
  RETURN to_char(SYSDATE  + n, 'DD.MM.YYYY HH24:MI');
END get_date;
/

CREATE OR REPLACE FUNCTION get_date2(n IN NUMBER) 
RETURN date AS
BEGIN
  RETURN to_date(to_char(SYSDATE  + n, 'DD.MM.YYYY HH24:MI'), 'DD.MM.YYYY HH24:MI');
END get_date2;
/

select to_char(get_date2(1), 'DD.MM.YYYY HH24:MI') from dual;

select get_date(1) from dual;

創建或替換功能get_date(n IN NUMBER)返回varchar2是

dTmp DATE:= sysdate + n;

開始

返回to_char(dTmp,'DD.MM.YYYY HH24:MI');

結束;

/

SELECT get_date(1)FROM dual;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM