String changeTimestamp = new Timestamp(System.currentTimeMillis()).toString();
<property name="updatePersonDetail">
<bean class="com.cigna.ibor.dao.UpdateWithParameters" parent="dao.template">
<constructor-arg ref="mydb.ds" />
<constructor-arg>
<value>
<![CDATA[
UPDATE MYDB.INDIV_DETAIL
SET PERSON_ID =?
, LAST_OPER_ID = ?
, LAST_TIMESTMP = ?,
WHERE SRC_LOC_CD = ?
AND SRC_SYS_ID = ?
]]>
</value>
</constructor-arg>
<constructor-arg>
<list>
<ref local="java.sql.Types.VARCHAR" />
<ref local="java.sql.Types.VARCHAR" />
<ref local="java.sql.Types.VARCHAR" />
<ref local="java.sql.Types.VARCHAR" />
<ref local="java.sql.Types.VARCHAR" />
</list>
</constructor-arg>
</bean>
</property>
我得到java.sql.sqlDataException:ORA-01843:运行时不是一个有效的月份。任何帮助都很感激!
如果字符串的格式类似于08-apr-16 09.52.22.000000000 am
,则可以指定格式,而不是依赖于隐式转换:
UPDATE MYDB.INDIV_DETAIL
SET PERSON_ID =?
, LAST_OPER_ID = ?
, LAST_TIMESTMP = TO_TIMESTAMP(?, 'DD-MON-RR HH:MI:SS.FF9 AM'),
WHERE SRC_LOC_CD = ?
AND SRC_SYS_ID = ?
格式模型必须与实际传递的内容相匹配。听起来好像您假设这是会话的NLS_TIMESTAMP_FORMAT设置,但错误表明情况并非如此。不要混淆客户机/IDE显示查询的日期/时间戳的方式和存储方式--没有内部格式,Oracle使用与显示值完全不同的内部表示。
即使这样,您也假设Oracle会话的数据语言与Java值匹配--例如,它们都使用英文月份名称。如果您不确定数据库会话的日期语言是什么,但知道Java字符串总是英语,则可以在转换中指定:
, LAST_TIMESTMP = TO_TIMESTAMP(?, 'DD-MON-RR HH:MI:SS.FF9 AM'
, 'NLS_DATE_LANGUAGE=ENGLISH'),
问题内容: 我使用此查询创建了一个表现 在,当我尝试使用插入一些数据时,遇到此错误。 我做错了什么? 问题答案: 不是日期,而是一个字符串。 当使用session参数的值作为格式掩码将Oracle非日期文字插入到列中时,Oracle将对其进行隐式处理( 注意:这是一个session参数,属于客户端;它不是全局设置 )。如果非日期文字与该格式匹配,则它将起作用(如果不匹配,则它将不起作用)-但是,如
我在Oracle DB中有一个列,它是数据类型。存储在此列中的典型值类似于。我试图得到所有的记录,其中该专栏有记录后2015年8月1日。 但是,我得到的是。我哪里做错了?
我在尝试从按日期筛选的表中选择数据时遇到了一个问题。 例如: null 此选择的结果是:
NLS语言是美国语言。
我使用以下查询创建了一个表 现在,当我尝试使用SQL错误:ORA-01843:not a valid month。 我做错了什么?
我希望在oracle数据库11.2.0.4版上的PL/SQL ETL进程中插入具有时间戳列的表中的数据 如果在Toad中运行“Create INSERT from seletcted row”,将得到以下SQL命令: 在PL/SQL中,我生成一个varchar2/string,类似于: