将日期保存到Oracle时的奇怪行为

时间:2015-03-09 20:45:38

标签: java oracle date jdbc

我需要能够将应用程序中的出生日期保存为GregorianCalendar到Oracle DB作为日期。

这应该是简单的吗?错误。这是我的问题。

当我保存出生日期时,我按照以下方式进行操作

CallableStatement cstmtData= connection.prepareCall(sql);
stmtUpdateRec.setDate(1,birthDate==null?null:new java.sql.Date(birthDate.getTime().getTime()));

适用于1950年1月1日之后的日期。但是,1950年1月1日之前的任何日期都将转换为21世纪,即1917年1月2日将保存到2017年1月2日的数据库。

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

感谢您让我反省您的想法。我想到了。 Roey Golzarpoor你是对的,因为问题在于我的proc中的一个SQL语句。

我不知道为什么但是无论出于什么原因我都有大写 DATE字段。我在日期字段中使用了实际的upper()函数。这导致了这种绝对古怪的行为。