sysdate正确后如何在表中插入值

时间:2019-01-29 19:17:46

标签: oracle oracle11g oracle-apex oracle-apex-5.1

当sysdate正确时,如何在表中插入一个值。这是我的代码,但stat字段为空

begin
  for idx in 1 .. apex_application.g_f01.count
  loop
    if apex_application.g_f01(idx) is not null then
      update outgoing 
      set STAT ='CONFIRM'
   WHERE FILENUMBER = APEX_APPLICATION.G_F01(IDX)
   AND DEPARTMENT = apex_application.g_f03(idx)
   and OUTGOINGDATE= sysdate
         ;
    end if;
  end loop;
end;

1 个答案:

答案 0 :(得分:1)

如果您验证apex_application.g_f0x是正确的(即表示您认为正确的列-如果不正确,请在浏览器中使用 inspect元素),那么最可疑的情况是:< / p>

and OUTGOINGDATE = sysdate

SYSDATE是一个返回日期和时间的函数,例如

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-------------------
29.01.2019 22:02:32

SQL>

我怀疑OUTGOINGDATE列是否确切地包含当前日期/时间值。一种可能会解决此问题的方法是截断一个或两个值,例如

and OUTGOINGDATE = trunc(sysdate)

and trunc(OUTGOINGDATE) = trunc(sysdate)

由于TRUNC函数删除了时间分量,因此您只比较日期。注意,第二个选项禁止在OUTGOINGDATE列上使用索引(如果存在);如果表包含不那么多的行,则不会造成问题,但是如果表很大,则可能会(可能会)出现问题。不过,有一种解决方法-例如,您可以使用

and outgoingdate >= trunc(sysdate)
and outgoingdate <  trunc(sysdate + 1)

如果不是这种情况,请检查OUTGOINGDATE列的值并采取相应措施。如果不确定该怎么做,请提供更多信息。