我们应该创建一个向当前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
但是,正如您所看到的,时间不包含在结果中,而这就是我在这种情况下所需要的。任何帮助都将不胜感激。我确定我太盲目无法看到它了,但我现在已经盯着这段代码,我承认失败了。
答案 0 :(得分:2)
您必须将结果格式化为您的规格,如
--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;
答案 1 :(得分:1)
您可以决定是否希望自己的功能返回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;
答案 2 :(得分:-1)
创建或替换函数get_date(n IN NUMBER) RETURN varchar2是
dTmp DATE:= sysdate + n;
BEGIN
RETURN to_char(dTmp,'DD.MM.YYYY HH24:MI');
END;
/
SELECT get_date(1)FROM dual;