我需要得到两个日期之间的差值,如果差值是84天,我可能会输出2个月14天,我的代码只是给出了总数。以下是代码
SELECT Months_between(To_date('20120325', 'YYYYMMDD'),
To_date('20120101', 'YYYYMMDD'))
num_months,
( To_date('20120325', 'YYYYMMDD') - To_date('20120101', 'YYYYMMDD') )
diff_in_days
FROM dual; 输出为:
NUM_MONTHS DIFF_IN_DAYS
2.774193548 84例如,我需要此查询的输出为2个月零14天,否则我不会介意在月份数字之后是否可以获得确切的天数,因为这些天并不是真正的14天,因为所有的月份都不是30天。
发布于 2016-12-08 08:24:20
在这里,我只是比较今天和表中的CREATED_DATE DATE字段之间的区别,这显然是过去的日期:
SELECT
((FLOOR(ABS(MONTHS_BETWEEN(CREATED_DATE, SYSDATE))) / 12) * 12) || ' months, ' AS MONTHS,
-- we take total days - years(as days) - months(as days) to get remaining days
FLOOR((SYSDATE - CREATED_DATE) - -- total days
(FLOOR((SYSDATE - CREATED_DATE)/365)*12)*(365/12) - -- years, as days
-- this is total months - years (as months), to get number of months,
-- then multiplied by 30.416667 to get months as days (and remove it from total days)
FLOOR(((SYSDATE - CREATED_DATE)/365)*12 - (FLOOR((SYSDATE - CREATED_DATE)/365)*12)) * (365/12))
|| ' days ' AS DAYS
FROM MyTable我使用(365/12)或30.416667作为我的转换因子,因为我使用总天数并去掉年份和月份(作为天数)来获得剩余的天数。无论如何,对于我的目的来说,这已经足够好了。
https://stackoverflow.com/questions/11500098
复制相似问题