sql >> Databasteknik >  >> RDS >> Oracle

Konvertera decimalår till datum

Om du utgår från antagandet att decimaldelen har beräknats enligt antal dagar under det givna året (dvs 365 eller 366 beroende på om det var ett skottår), kan du göra något så här:

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



  1. Hur kan jag utföra vakuumet med PostgreSQL?

  2. ER_NOT_SUPPORTED_AUTH_MODE:Klienten stöder inte autentiseringsprotokoll som begärts av servern; överväg att uppgradera MySQL-klienten

  3. UPPDATERA med BESTÄLLNING AV

  4. Jag har olika resultat från frågan för COUNT('e.id') eller COUNT(e.id)