oracle case语句添加日期字段导致表达式缺失错误信息,如何解决?

swvgeqrz  于 2023-01-20  发布在  Oracle
关注(0)|答案(2)|浏览(136)
update r5events e       
set         
 e.evt_udfdate10 =  e.evt_reported +    
  CASE  
    when to char(e.evt_reported, 'DD/MM/YYYY') = ('07/01/2023' ) then 5
  end,

还尝试了to_date而不是to_char

eoigrqb6

eoigrqb61#

除了missing _ in to_char之外,如果这是完整的SQL语句,那么末尾的尾随逗号将引发错误。

xdnvmnnf

xdnvmnnf2#

实际上,您应该比较日期与日期,而不是将日期转换为字符串,然后比较字符串与字符串。
样本数据:

SQL> select * From r5events;

        ID EVT_REPORT EVT_UDFDAT
---------- ---------- ----------
         1 07/01/2023             --> add 5 to this date because it is equal to 7th of January 2023
         2 25/12/2022             --> you didn't say what to do if date isn't 7th of January 2023,
                                      so I'm leaving it "as is"

更新声明:

SQL> update r5events e set
  2    e.evt_udfdate10 =
  3      e.evt_reported + case when e.evt_reported = date '2023-01-07' then 5
  4                            else 0
  5                       end;

2 rows updated.

结果:

SQL> select * From r5events;

        ID EVT_REPORT EVT_UDFDAT
---------- ---------- ----------
         1 07/01/2023 12/01/2023  --> 5 days added to EVT_REPORTED
         2 25/12/2022 25/12/2022  --> nothing has been added

SQL>

如果evt_reported包含与 * 午夜 * 不同的时间成分,则update * 可能 * 需要调整。如果您发布了表描述、样本数据和所需结果,则会更容易提供帮助。

相关问题