将BC日期转换为AD



我有日期,这些日期早于第0年。我需要将它们转换为AD日期并再添加1年。例如,我有BC 16.2.2011,想要AD 16.2.2012

我们有一个第三端Java应用程序,有时会发生错误;错误地保存了日期。在上面的例子中,它应该保存16.2.2012,但相反,在DB中,是-16.2.2011(它是一个"小",因为Oracle没有年份0 -这很重要)。

转换这些日期很容易,但问题是,当保存的日期应该是29.2.2012,因为没有-29.2.2011。而不是这个日期,它保存-1.3.2011,我不能轻易转换。

有办法正确地转换日期吗?比如从数据库中的转储数据中得到起始年份的秒数?

告诉我们是否有问题:

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

这是一个错误的转换,因为它没有考虑到year可能是负的(正确的将是syyyy)

我已经测试了:your_bc_date = to_date('BC 28.2.2011', 'BC dd.mm.yyyy')

最新更新