将BC日期转换为AD

时间:2013-01-21 09:18:42

标签: sql oracle date

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

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

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

有没有办法正确转换日期?比如从数据库中的转储数据开始年份的秒数?

1 个答案:

答案 0 :(得分:0)

告诉我们这是否有问题:

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

这是一个错误的演员,因为它不认为年份可能是负数(正确将是syyyy

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