【发布时间】:2016-01-25 10:12:27
【问题描述】:
我正在尝试使用这种格式打印每个人的年龄:
例如:19 岁 8 个月 13 天。
我用谷歌搜索了很多,我注意到有一个特定的函数可以计算日期之间的差异DATEDIFF。
但是 SQL*Plus 中不存在此功能,所以我继续尝试使用 MONTHS_BETWEEN() 和一些运算符。
我的尝试:
SELECT name , ' ' ||
FLOOR(MONTHS_BETWEEN(to_date(SYSDATE),to_date(date_of_birth))/12)||' years ' ||
FLOOR(MOD(MONTHS_BETWEEN(to_date(SYSDATE),to_date(date_of_birth)),12)) || ' months ' ||
FLOOR(MOD(MOD(MONTHS_BETWEEN(to_date(SYSDATE),to_date(date_of_birth)),12),4))|| ' days ' AS "Age"
FROM persons;
我的问题取决于日子。我不知道我应该如何计算天数,使用这个函数('尝试除以 4 或 30);我认为我的逻辑很糟糕,但我想不通,有什么想法吗?
【问题讨论】:
-
您应该在标签中添加“oracle”
-
我认为是同一个问题here
标签: sql oracle date-arithmetic