【问题标题】:Return Date got no hour and minutes returned返回日期没有返回小时和分钟
【发布时间】:2015-03-10 18:30:22
【问题描述】:

这是我的代码

CREATE OR REPLACE FUNCTION GET_DATE(P_DAYS IN  NUMBER) RETURN DATE AS
  V_DATE DATE;
BEGIN
  V_DATE := SYSDATE+P_DAYS;
  DBMS_OUTPUT.PUT_LINE(TO_CHAR(V_DATE, 'YYYY-MM-DD HH24:MI:SS'));
  RETURN V_DATE;
END;
/

我的输出:

GET_DATE(2)
-----------
2015-03-12
2015-03-12 19:26:14

如何返回分钟、小时和秒?我希望答案像 dbms_output 那样......

【问题讨论】:

  • 使用to_char() 将日期转换为字符串并包含您想要的所有元素。
  • 我试过但没有成功。你能给我举个例子吗? V_DATE := TO_CHAR(SYSDATE+P_DAYS, 'YYYY-MM-DD HH24:MI:SS');它不起作用..
  • v_date 是 DATE 类型,而不是字符。不需要转换。请说明你是如何得到输出的。
  • 我在运行它时得到了这个:01830. 00000 - “日期格式图片在转换整个输入字符串之前结束”
  • 您显示的输出没有意义。如果您只是调用get_date(2),则只会返回一个值。你如何获得两行输出?你是不是说第一行是你得到的输出,第二行是你想要的输出?

标签: sql oracle plsql oracle11g


【解决方案1】:

我认为你需要这样做:

CREATE OR REPLACE FUNCTION GET_DATE(p_days IN NUMBER) RETURN VARCHAR2 AS
    v_date VARCHAR2(30);
BEGIN
    v_date := TO_CHAR(SYSDATE + p_days, 'YYYY-MM-DD HH24:MI:SS');
    RETURN v_date;
END;
/

【讨论】:

  • 您的函数从一开始就有效。您所做的只是以省略时间部分的方式显示日期。但它一直都在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2020-03-14
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多