【问题标题】:How do you insert a date in a table?如何在表格中插入日期?
【发布时间】:2020-08-24 18:38:32
【问题描述】:

我有这张表,但我不确定输入日期的格式是什么

insert into Works (ClientID, CCode, BranchNo, EquipNo, HireDate)
select 001, 101, 01, 24500, '23-JAN-13' from dual union
select 002, 102, 01, 23200, '12-SEP-12' from dual union
select 003, 103, 01, 11500, '15-DEC-14' from dual union
select 004, 104, 01, 76830, '16-MAR-16' from dual union
select 005, 105, 01, 23760, '08-JUN-15' from dual

这不起作用,它只是给我这个错误:

ORA-00904:“HIREDATE”:无效标识符

新错误:https://m.imgur.com/gallery/LkrLsol

【问题讨论】:

  • 检查表格中的hireDate 格式。
  • 好吧,尽管所有 cmets 都正确格式化了您的数据字符串,转换为实际的 DATE 数据类型,但这些都与您实际报告的错误消息无关。消息说 HIREDATE 是一个无效的标识符。换句话说,您的表没有名为 HIREDATE 的列。我还要重申,使用 2 位数年份是完全愚蠢的。 1998 年和 1999 年的大部分时间里,我都在竭尽全力为我当时的雇主解决千年虫问题。现在我们正在培养拒绝吸取教训的新一代。

标签: sql oracle date oracle-apex-5 oracle-apex-5.1


【解决方案1】:

尝试使用有效的日期文字:

insert into Works (ClientID, CCode, BranchNo, EquipNo, HireDate)
select 001, 101, 01, 24500, date '2013-01-23' from dual union
select 002, 102, 01, 23200, date '2012-09-12' from dual union
select 003, 103, 01, 11500, date '2014-12-15' from dual union
select 004, 104, 01, 76830, date '2016-03-16' from dual union
select 005, 105, 01, 23760, date '2015-06-08' from dual

您也可以使用 Oracle 的 TO_DATE 函数:

TO_DATE('23-JAN-13', 'DD-MON-YY')

【讨论】:

  • 这是唯一可能的格式吗?像我可以做 DD-MM-YYYY 吗?也感谢您的帮助
  • 现在我收到 DD-MM-YYYY 格式的这个错误,你的格式 (YYYY-MM-DD) 也不起作用。 ORA-01847: day of month must be between 1 and last day of month
  • @FiveNine 如果您确实必须坚持使用当前的非 ANSI 日期文字,请使用 TO_DATE('23-JAN-13', 'DD-MON-YY')
  • @GordonLinoff 扮演魔鬼的拥护者,如果 OP 希望每条记录始终具有唯一的客户端 ID,那么使用 union 与 union all 的性能可能会稍好一些。
【解决方案2】:

'23-JAN-13' 不是日期,而是字符串。避免使用两位数年份'YY'。这就是 Y2K 错误开始的原因。

插入DATE 值:

使用带有适当格式掩码的TO_DATE

TO_DATE('09-05-2020', 'DD-MM-YYYY')

或者,

ANSI 日期字面量,它使用固定格式'YYYY-MM-DD':

DATE '2020-05-09'

【讨论】:

  • 我尝试了后者,即使日期和月份值低于 12,我也收到此错误。ORA-01847: day of month must be between 1 and last day of month
  • @FiveNine 告诉我你在做什么,复制粘贴你的会话。
  • 我无法在此处复制粘贴代码,它总是一团糟,所以我截取了屏幕截图并将其放在 imgur i.imgur.com/JmW5moR.png
  • 我的错,对不起。感谢您帮助我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多