2

我有日期,在第 0 年之前。我需要将它们转换为 AD 日期并再增加 1 年。例如,我有BC 16.2.2011并且想要AD 16.2.2012.

我们有一个第 3 端 Java 应用程序,其中有时会发生错误;它错误地保存了日期。在上面的示例中,它应该保存16.2.2012,但在数据库中,它是-16.2.2011(它是“小一年”,因为 Oracle 没有零年 - 这很重要)。

转换这些日期很容易,但问题是保存日期应该是什么时候,29.2.2012因为没有-29.2.2011. 它保存的不是这个日期-1.3.2011,我无法轻松转换。

有什么方法可以正确转换日期吗?就像从数据库中的转储数据中获取起始年份的秒数一样?

4

1 回答 1

0

Tell us if it is something wrong with:

select to_date(to_char(your_bc_date_here,'dd.mm.YYYY'), 'dd.mm.YYYY') + 1 from dual;

This is a wrong cast because it does not considers year may be negative(correct would be syyyy)

I've tested with: your_bc_date = to_date('BC 28.2.2011', 'BC dd.mm.yyyy')

于 2013-01-21T10:24:09.580 回答