首页 文章

Oracle / SQL:将日期和时间连接到单个日期值时的无效数字格式模型

提问于
浏览
1

我试图在Oracle中创建一个比较两个日期的触发器,然后如果两个日期的差异低于某个值,则删除记录 . 我有一个格式为'DD-MON-YYYY HH24MI'的完整日期值,然后对于第二个日期值,我想将'DD-MON-YYYY'值与'HH24MI'值连接起来 .

我得到的问题是,当我尝试使用to_char将日期和时间值连接在一起,然后对返回的值使用to_date时,它会给我一个ORA-01481无效的数字格式错误 . 触发器本身的相关线条如下 . 如果有人能帮我解决这个问题,我将不胜感激!

CREATE OR REPLACE TRIGGER dateTrig
...
DECLARE
    day date;
    ftime date;
    CURSOR c_table1 IS SELECT ...;
BEGIN
FOR entry IN c_table1 LOOP
    day := to_date(entry.fdate);
    ftime := to_date(to_char(day, 'DD-MON-YYYY') || ' ' || to_char(entry.dtime, 'HH24MI'), 'DD-MON-YYYY HH24MI'); -- this is the line that is causing the error
    dbms_output.put_line(day || ', ' || ftime);
END LOOP;
END;
/

2 回答

  • 0

    我认为你最好避免使用to_char,如果可以并且尝试坚持使用以其原生日期格式返回值的函数,这样你也可能不需要在字符串上运行to_date命令,你可能会在以下方面取得一些成功或与之密切相关:

    ftime := Trunc(Sysdate) || ' ' || Extract(Hour From entry.dtime) || ':' Extract(Minute From entry.dtime)
    

    祝你好运

  • 2

    由于DTIME不是日期类型,因此不能将TO_CHAR与日期格式一起使用 . 如果将其填充为4个字符的长度,则可以将其简化为:

    ftime := to_date(to_char(day, 'DD-MON-YYYY') || ' ' || entry.dtime, 'DD-MON-YYYY HH24MI');
    

相关问题