我有日期,这些日期早于第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')