[英]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;
您可以決定是否要讓函數返回date
或varchar
; 您可以根據需要選擇以下方式之一:
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.