TO_CHAR 未能在更新中设置特定格式

TO_CHAR failing to set specific format in update

我正在尝试在遗留代码使用 DDMM 格式 DATETIME 作为字符的记录中设置特定字段。我希望能够找到一个匹配某物的特定值,并从根本上改变那个字段。超级简单的东西,对吧?

update MY_TABLE 
set SOME_DATETIME = to_char('0111', 'DDMM') 
where 
FIELDA = 'AA' 
and FIELDB = '2' 
and to_char(SOME_DATETIME, 'DDMM') = '0311' 
and FIELDC = 'ABC'

我知道一个事实,如果我在 where 子句中使用 to_char(SOME_DATETIME, 'DDMM') = '0311' 进行查询,但我似乎无法能够改变那个领域。我收到以下错误:

** ERROR: DBD::Oracle::st execute failed: ORA-01481: invalid number format model 

我发现了很多示例,其中人们在查询中克服了此错误消息,但在 "set" 中却没有。

我是 Oracle 的新手,希望得到一些帮助。

谢谢

错误在这部分"set SOME_DATETIME = to_char('0111', 'DDMM')"。当您使用 to_char 函数并指定日期格式时,它需要一个日期。他现在得到什么?一个字符串。将其转换为某些 Oracle 日期并重试。 例如:

select to_char(to_date('2018-01-01','yyyy-mm-dd'), 'DDMM') 来自双

SOME_DATETIME 的数据类型似乎是 DATE,因为查询适用于 to_char(SOME_DATETIME, 'DDMM') = '0311' 转换。然后适当使用以下:

update MY_TABLE 
   set SOME_DATETIME = to_date('0111', 'DDMM') 
 where FIELDA = 'AA' 
   and FIELDB = '2' 
   and to_char(SOME_DATETIME, 'DDMM') = '0311' 
   and FIELDC = 'ABC';

真正的转换应该由 to_date 而不是 to_char 执行。

Select TO_CHAR(date_time_Column,'DD\MM\YYYY HH24:MI) 

是改进自动输出和格式设置的好方法