我有一些代表年份的值。 例如37.8年。 我想将其在SQL Oracle中转换为三列:
如何在查询中做到这一点?
答案 0 :(得分:3)
select
trunc(n) as years
,to_char(date'2020-01-01' + mod(n,1)*365, 'mm') as months
,to_char(date'2020-01-01' + mod(n,1)*365, 'dd') as days
from (select 37.8 n from dual);
YEARS MONTHS DAYS
37 10 19
答案 1 :(得分:1)
您可以使用EXTRACT
来获取值:
SELECT EXTRACT( YEAR FROM dt ) - 1970 AS years,
EXTRACT( MONTH FROM dt ) - 1 AS months,
EXTRACT( DAY FROM dt ) - 1 AS days
FROM (
SELECT DATE '1970-01-01' + 37.8 * 365.25 AS dt
FROM DUAL
)
哪个输出:
YEARS | MONTHS | DAYS ----: | -----: | ---: 37 | 9 | 19
db <>提琴here