sql >> Database teknologi >  >> RDS >> Oracle

Konverter decimalår til dato

Hvis du tager udgangspunkt i den antagelse, at decimaldelen blev beregnet i henhold til antal dage i det givne år (dvs. 365 eller 366 afhængigt af om det var et skudår), kan du gøre sådan noget:

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. gemme antallet af rækker eller bare tælle rækkerne?

  2. Sådan genopbygges visningen i SQL Server 2008

  3. Jeg har forskellige resultater fra forespørgsel for COUNT('e.id') eller COUNT(e.id)

  4. MySQL Stored Procedures virker ikke med SELECT (grundlæggende spørgsmål)