ORA-01855:需要AM/AM或PM/PM

RMN*_*RMN 2 oracle date oracle10g nls-lang

我收到错误: ORA-01855: AM/A.M. or PM/P.M. required

当我尝试执行以下查询时.

  INSERT INTO TBL(ID,START_DATE) 
    values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI AM'))
Run Code Online (Sandbox Code Playgroud)

我的START_DATE列的类型为"Date".

我执行了以下查询,它没有给出任何错误,在上述问题中仍然没有成功:

ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY HH:MI AM";
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 5

格式掩码必须与要转换的字符串的格式匹配.因此,您可能希望添加SS到格式掩码或从字符串中删除秒

INSERT INTO TBL(ID,START_DATE) 
  values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'))
Run Code Online (Sandbox Code Playgroud)

要么

INSERT INTO TBL(ID,START_DATE) 
  values (123, TO_DATE ('3/13/2012 9:22 AM', 'MM/DD/YYYY HH:MI:SS AM'))
Run Code Online (Sandbox Code Playgroud)

如果你想接受一个包含秒的字符串,但你不想在数据库中存储秒数(在这种情况下,Oracle将始终存储0秒),你可以使用该TRUNC函数

INSERT INTO TBL(ID,START_DATE) 
  values (123, TRUNC( TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 'MI') )
Run Code Online (Sandbox Code Playgroud)