【问题标题】:insert statement using current date column value使用当前日期列值插入语句
【发布时间】:2016-03-08 08:33:18
【问题描述】:

运行此语句时出现以下错误。我需要在列中插入日期函数。对此的任何想法都会非常有帮助。

错误信息:

错误 - ORA-20000: ORA-01843: 位置 504 的月份无效:TO_CHAR((LAST_DAY(ADD_MONTHS(sysdate, -1))),'DD/MM/YYYY')

数据类型: ATT3 的数据类型是 DATE(7), ATT1 和 ATT2 是 VARCHAR2(400)

查询:

insert into ABC (X, Y, Z, ATT1, ATT2, ATT3)
VALUES ('G', 'H', 'I',
        TO_CHAR(LAST_DAY(ADD_MONTHS(sysdate, -1)),'Mon DD YYYY HH:MI AM'),
        TO_CHAR(sysdate, 'Mon D YYYY HH:MI AM'),
        TO_CHAR((LAST_DAY(ADD_MONTHS(sysdate, -1))),'DD/MM/YYYY'));

【问题讨论】:

  • 错误说明了什么...?
  • 错误 - ORA-20000: ORA-01843: 位置 504 的月份无效:TO_CHAR((LAST_DAY(ADD_MONTHS(sysdate, -1))),'DD/MM/YYYY')

标签: sql oracle


【解决方案1】:

TO_CHAR(sysdate, 'Mon D YYYY HH:MI AM') 会给出不正确的结果。您需要将其更改为TO_CHAR(sysdate, 'Mon DD YYYY HH:MI AM')

请粘贴表格的结构和数据类型。

【讨论】:

  • ATT3 的数据类型为 DATE(7)、ATT1 和 ATT2 VARCHAR2(400)
  • 如果 ATT3 是 DATE,为什么要插入字符串?你也可以用trunc(sysdate, 'mm') - 1替换TO_CHAR((LAST_DAY(ADD_MONTHS(sysdate, -1))),'DD/MM/YYYY')
  • 感谢@Boneist 解决了。数据类型错误。
猜你喜欢
  • 1970-01-01
  • 2011-12-20
  • 2012-02-23
  • 2011-07-04
  • 1970-01-01
  • 2017-04-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多