PLSQL替换日期中的小时数

时间:2013-07-10 12:22:26

标签: oracle plsql to-date to-char

我想替换某个日期的小时,例如,如果我有 07/07/13 11:15,我想从第一次约会开始07/07/13 00:00。

所以,我要做的是:

textDate := TO_CHAR (auxDate, 'DD/MM/RR')||' '||textHour||':'||textMin;
endDate := TO_DATE(textDate, 'DD/MM/RR hh:mm');

当我运行SP时,它会给我以下错误:

  

ORA-01810:格式代码出现两次

auxDate声明为DATE,textDate声明为VARCHAR2(20),endDate声明为DATE。

你能帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

你有to_date格式的拼写错误。它必须是mi而不是mm

endDate := TO_DATE(textDate, 'DD/MM/RR hh:mi');

答案 1 :(得分:0)

将日期重置为午夜,然后添加所需的小时数和分钟数。

endDate := trunc(auxDate) + textHour/24 + textMin/24/60;

答案 2 :(得分:0)

DECLARE
    textDate_YYYYMMDD VARCHAR2(8)  := '20130101';
    textDate_HH       VARCHAR2(2)  := '13';
    textDate_MM       VARCHAR2(2)  := '15';
    textDate_mask     VARCHAR2(14) := 'YYYYMMDDHH24MI';
    textDate          DATE         := TO_DATE(textDate_YYYYMMDD || textDate_HH || textDate_MM, textDate_mask);
BEGIN
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(textDate, textDate_mask));
END;
/*
anonymous block completed
201301011315
*/