यदि आप इस धारणा से शुरू करते हैं कि दशमलव भाग की गणना दिए गए वर्ष में दिनों की संख्या के अनुसार की गई थी (यानी 365 या 366 इस पर निर्भर करता है कि यह एक लीप वर्ष था), आप ऐसा कुछ कर सकते हैं:
with
q1 as (select 2003.024658 d from dual)
,q2 as (select d
,mod(d,1) as decimal_portion
,to_date(to_char(d,'0000')||'0101','YYYYMMDD')
as jan01
from q1)
,q3 as (select q2.*
,add_months(jan01,12)-jan01 as days_in_year
from q2)
select d
,decimal_portion * days_in_year as days
,jan01 + (decimal_portion * days_in_year) as result
from q3;
d: 2003.024658
days: 9.00017
result: 10-JAN-2003 12:00am