首页 > 编程知识 正文

oracle 日期相差天数,oracle计算当月天数

时间:2023-05-06 02:46:46 阅读:262792 作者:789

iamlaosong文

在写统计查询的SQL语句时,经常会碰到根据一个查询日期推演其它日期的问题,如同比、环比等。

1、字符串转换成日期:to_date('2016-6-16', 'yyyy-mm-dd')

2、统计当月累计需要当月第一天:trunc(to_date('2016-6-16', 'yyyy-mm-dd'),'mm'),'mm'也可以写成'month'

3、统计当年累计需要当年第一天:trunc(to_date('2016-6-16', 'yyyy-mm-dd'),'yy'),'yy'也可以写成'year'

4、有时需要当月最后一天:last_day(to_date('2016-6-16', 'yyyy-mm-dd'))

5、环比需要用到上月同期:add_months(to_date('2016-6-16', 'yyyy-mm-dd'),-1)

6、同比需要用到去年同期:add_months(to_date('2016-6-16', 'yyyy-mm-dd'),-12)

7、组合-去年同期第一天:trunc(add_months(to_date('2016-6-16', 'yyyy-mm-dd'),-12),'mm')

8、两个日期之间的天数:to_date('2016-6-16', 'yyyy-mm-dd')-to_date('2016-6-10', 'yyyy-mm-dd')

9、两个日期之间的月数:months_between(to_date('2016-6-16', 'yyyy-mm-dd'),to_date('2016-1-16', 'yyyy-mm-dd')),注意,两个日期如果日数不同,则会出现小数,如months_between(to_date('2016-6-16', 'yyyy-mm-dd'),to_date('2016-5-6', 'yyyy-mm-dd'))的结果是1.32258064516129,其中的小数部分是多余的天数除以31的结果。

比较欣慰的是当日期是当月的最后一天时,计算同比或者环比日期时,系统会自动调整为该月最后一天。例如,add_months(to_date('2016-4-30', 'yyyy-mm-dd'),-1)的结果是2016-3-31,这个结果对于按月统计是很有好处的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。