将日期保存到 Oracle 时的奇怪行为
Weird behaviour when saving date to Oracle
我需要能够将应用程序中表示为 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 日保存到数据库中。
知道为什么会这样吗?
谢谢你让我想起你。我想到了。 Roey Golzarpoor 你是对的,因为问题出在我的过程中的 SQL 语句之一。
我不知道为什么,但出于某种原因,我有 大写 DATE 字段。我在日期字段上使用了实际的 upper()
函数。这导致了这种绝对古怪的行为。
我需要能够将应用程序中表示为 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 日保存到数据库中。
知道为什么会这样吗?
谢谢你让我想起你。我想到了。 Roey Golzarpoor 你是对的,因为问题出在我的过程中的 SQL 语句之一。
我不知道为什么,但出于某种原因,我有 大写 DATE 字段。我在日期字段上使用了实际的 upper()
函数。这导致了这种绝对古怪的行为。