将3位数输入转换为日期格式

时间:2016-01-20 15:48:10

标签: sql oracle

即使业务要求将输入声明为" julian" date,它实际上是一个传递给Oracle存储过程的3位数字。例如,如果输入是' 001'然后我需要将它转换为当年的1月1日,或者如果它是010将其转换为当年的1月10日等。我如何考虑闰年呢? 请建议。谢谢你的时间。

2 个答案:

答案 0 :(得分:3)

如果三位数字代表一年中的某一天,您只需使用to_date功能DDD,它代表三位数字,即一年中的某一天。

select to_char(to_date(310, 'DDD'),'DD.MM.YYYY') from dual; -- 05.11.2016
select to_char(to_date(001, 'DDD'),'DD.MM.YYYY') from dual; -- 01.01.2016
select to_char(to_date(010, 'DDD'),'DD.MM.YYYY') from dual; -- 10.01.2016
select to_char(to_date(060, 'DDD'),'DD.MM.YYYY') from dual; -- 29.02.2016

答案 1 :(得分:1)

你可以尝试这种方法。

select to_char(trunc(sysdate, 'YY') + 060 - 1, 'DD/MM/YYYY') as day from dual;

29/02/2016

select to_char(trunc(sysdate, 'YY') + 010 - 1, 'DD/MM/YYYY') as day from dual;

2016年10月1日