我试图在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 回答
我认为你最好避免使用to_char,如果可以并且尝试坚持使用以其原生日期格式返回值的函数,这样你也可能不需要在字符串上运行to_date命令,你可能会在以下方面取得一些成功或与之密切相关:
祝你好运
由于DTIME不是日期类型,因此不能将TO_CHAR与日期格式一起使用 . 如果将其填充为4个字符的长度,则可以将其简化为: