Nếu bạn bắt đầu từ giả định rằng phần thập phân được tính theo số ngày trong năm nhất định (tức là 365 hoặc 366 tùy thuộc vào đó có phải là năm nhuận hay không), bạn có thể làm điều gì đó như sau:
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