PL/SQL 将 SYSDATE 添加 +7 天的函数

PL/SQL function to add +7 days to SYSDATE

我们应该创建一个函数,将当前 SYSDATE 添加 +7 天,并写入时间和分钟,但是,我的代码只显示日期,不显示时间。我究竟做错了什么?这可能很容易,但我就是想不通,而且网上也没有太多帮助。

到目前为止,我已经尝试过:

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;

您可以决定您的函数是 return 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) RETURN varchar2 是

dTmp 日期:=sysdate+n;

开始

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

结束;

/

SELECT get_date(1) 来自双重;