我需要能够将应用程序中的出生日期保存为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日的数据库。
为什么会发生这种情况?
答案 0 :(得分:2)
感谢您让我反省您的想法。我想到了。 Roey Golzarpoor你是对的,因为问题在于我的proc中的一个SQL语句。
我不知道为什么但是无论出于什么原因我都有大写 DATE字段。我在日期字段中使用了实际的upper()
函数。这导致了这种绝对古怪的行为。