首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在sql中获取以月和日表示的两个日期之间的差异

在sql中获取以月和日表示的两个日期之间的差异
EN

Stack Overflow用户
提问于 2012-07-16 15:49:09
回答 9查看 110.4K关注 0票数 14

我需要得到两个日期之间的差值,如果差值是84天,我可能会输出2个月14天,我的代码只是给出了总数。以下是代码

代码语言:javascript
复制
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; 

输出为:

代码语言:javascript
复制
NUM_MONTHS    DIFF_IN_DAYS
2.774193548       84

例如,我需要此查询的输出为2个月零14天,否则我不会介意在月份数字之后是否可以获得确切的天数,因为这些天并不是真正的14天,因为所有的月份都不是30天。

EN

Stack Overflow用户

发布于 2016-12-08 08:24:20

在这里,我只是比较今天和表中的CREATED_DATE DATE字段之间的区别,这显然是过去的日期:

代码语言:javascript
复制
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作为我的转换因子,因为我使用总天数并去掉年份和月份(作为天数)来获得剩余的天数。无论如何,对于我的目的来说,这已经足够好了。

票数 1
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11500098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档