当前位置: 首页 > 知识库问答 >
问题:

使用不同的日期值更新oracle日期列

秦涵映
2023-03-14

当更新旧日期到新日期时,我得到

SQL错误:ORA-00932:不一致的数据类型:预期日期获取字符00932。00000-“不一致的数据类型:预期%s得到%s”

UPDATE test
   SET date1 = 
   CASE date1
    WHEN '22-OCT-19' THEN '23-OCT-19'
    WHEN '21-OCT-19' THEN '22-OCT-19'
    WHEN '20-OCT-19' THEN '21-OCT-19'
    WHEN '17-OCT-19' THEN '18-OCT-19'
    WHEN '06-OCT-19' THEN '07-OCT-19'
    WHEN '05-OCT-19' THEN '06-OCT-19'
    WHEN '04-OCT-19' THEN '05-OCT-19'
    WHEN '03-OCT-19' THEN '04-OCT-19'
    WHEN '02-OCT-19' THEN '03-OCT-19'
    WHEN '29-SEP-19' THEN '30-SEP-19'
    WHEN '27-SEP-19' THEN '28-SEP-19'
   END;

共有3个答案

常雪风
2023-03-14

这将工作:

update test 
set date1 = 
(
    case date1
       when to_date('22-OCT-19', 'dd-mon-yyyy') THEN to_date('23-OCT-19', 'dd-mon-yyyy')
       else date1
    end
);

这是演示

吕皓
2023-03-14

使用显式日期文字对逻辑进行措辞是否解决了问题?

UPDATE test
    SET date1 = (CASE date1
                     WHEN DATE '2019-10-22' THEN DATE '2019-10-23'
                     WHEN DATE '2019-10-21' THEN DATE '2019-10-22'
                     . . .
                 END);
陈允晨
2023-03-14

正如错误消息所暗示的,您混合了日期和varchars。

您当前的查询将把案例中未包含的所有其他日期更新为NULL。最好对日期文字使用WHERE条件,然后只需添加1天:

UPDATE test
SET date1 = date1 + 1
WHERE DATE1 IN
 ( DATE '2019-10-22'
  ,DATE '2019-10-21'
  ,DATE '2019-10-20'
  , etc.
 )
 类似资料:
  • 我正在使用Hibernate标准API并使用投影获得如下所示的结果: 输出: 这段代码按预期工作,但我想在唯一日期记录的基础上运行distinct函数,这意味着distinct函数不应该考虑时间值,而应该只考虑日期值。所以out put应该是这样的: 知道怎么做吗?

  • 我需要我的Java Android应用程序来提取和比较日期,但是要获得正确的日期一团糟。 实际运行时间:2022年1月10日周一22:29 结果: 日期当前时间=星期一 一月 10 22:29:53 GMT 01:00 2022 (正确日期) 日历.get(日历年)=2022.0.10 21:29:53 (错误的月份,错误的小时) 当前时间.getyear()=122.0.1 22:29:53 (

  • 在JavaScript中,为什么这两行代码使用不同的时区? 返回太阳9月12日2021 11:00 :03 GMT-0400(东部夏时制) 返回太阳9月12 2021 10:00:03格林尼治标准时间0500(东部标准时间) 为什么它们不是都在GMT-0500(东部标准时间)??? 这些行在代码中是一个接一个的,所以它们由同一个服务器运行。 谢谢"

  • 我有两个字符串格式的日期:说,格式为。比较日期1和日期2的相等性的最佳方法是什么?我不关心时间,只关心日、年、月。我应该将它们转换为即时并进行比较吗?

  • 我在向表单输入日期时遇到了一个问题,我查看了其他帖子,但他们给我的解决方案对我不起作用:(错误指示我一个无效的月份错误。 我尝试使用TO_DATE('...','dd/mm/yyyy'),但通过这样做引发了另一个错误(actualizaoferta.php): 我试了很多方法来输入日期,但什么都没有。 程序 提前致谢:)

  • 问题内容: 我将Java 8与Spring’s 和Oracle 12.1结合使用, 我想更新记录并获取更新的确切时间记录 当前它返回(int)受影响的行数,但是我想要确切的更新日期 我是否必须发送新请求以获取可能不正确的当前时间? 更确切的是将更新日期保存在列中,然后执行另一个SQL 是否有另一个选项可在一个查询中获取更新日期? 显然,我也不想使用从代码获取日期(如),因为服务器时间与数据库时间不