【问题标题】:Update statement works in Oracle 9i but not in Oracle 11G更新语句在 Oracle 9i 中有效,但在 Oracle 11G 中无效
【发布时间】:2015-04-09 03:40:15
【问题描述】:

我遇到了一个更新语句的问题,该语句以前在 Oracle 9i 中有效,但现在它不更新 Oracle 11G 中的任何行。这是我正在使用的声明。

update account  
set 
  days_to_validate = validated_date - val_requested_Date 
where 
  validated_date >= val_requested_date

validated_dateval_requested_date 都是日期字段,格式为:dd-mmm-yyyy(2015 年 3 月 18 日)。在我们进行升级之前,这在 Oracle 9i 中早期工作。

请就我们如何解决此问题提出建议。

谢谢 普拉桑特

【问题讨论】:

  • 它们是日期字段吗?还是它们是存储日期的 varchar 字段?
  • 请提供account表的定义,例如create table 声明。
  • 大家好,我能够解决这个问题。我尝试包含“to_date”函数,它在 Oracle 11G 中工作。这是我对查询所做的更改。
  • 错过了我之前评论中的查询:update account set days_to_validate=to_date(validated_date)-to_date(val_requested_Date) where to_Date(validated_date)>= to_date(val_requested_date)

标签: oracle oracle11g


【解决方案1】:

我能够解决这个问题。我尝试包含“to_date”函数,它在 Oracle 11G 中工作。这是我对查询所做的更改。

update account
    set days_to_validate = to_date(validated_date) - to_date(val_requested_Date)
  where to_Date(validated_date) >= to_date(val_requested_date) 

【讨论】:

  • 为了完全安全,您还应该在 TO_DATE() 函数中提供格式 - 例如,TO_DATE(validated_date, 'dd-mmm-yyyy')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多