如何将年份(带逗号)转换为年,月和日

时间:2020-09-17 15:47:12

标签: sql oracle

我有一些代表年份的值。 例如37.8年。 我想将其在SQL Oracle中转换为三列:

  • 年份:37
  • 月:9
  • 天数:18

如何在查询中做到这一点?

2 个答案:

答案 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