暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle SQL返回今年的12个月

ASKTOM 2019-10-23
1093

问题描述

选择 (to_char(add_month (sysdate,level-10),'Month')) 作为月份
,to_char(TRUNC(add_month (sysdate,level-10),'month'),'mm/dd/yyy')
,to_char(last_day(add_month (sysdate,level-10)),'mm/dd/yyy') 作为lastdaofmonth
从双重
按级别连接 <= 12

我需要今年的所有12个月,每月的第一天和每月的最后一天,而无需使用level和connect by。

请帮帮我。

专家解答

像这样的事情应该可以解决问题

SQL> with t(mth,lst,x) as
  2  (
  3  select trunc(sysdate,'YY') mth, last_day(trunc(sysdate,'YY')) lst, 0 x from dual
  4  union all
  5  select add_months(mth,1), add_months(lst,1), x+1
  6  from  t
  7  where x < 11
  8  )
  9  select mth,lst from t;

MTH       LST
--------- ---------
01-JAN-19 31-JAN-19
01-FEB-19 28-FEB-19
01-MAR-19 31-MAR-19
01-APR-19 30-APR-19
01-MAY-19 31-MAY-19
01-JUN-19 30-JUN-19
01-JUL-19 31-JUL-19
01-AUG-19 31-AUG-19
01-SEP-19 30-SEP-19
01-OCT-19 31-OCT-19
01-NOV-19 30-NOV-19
01-DEC-19 31-DEC-19

12 rows selected.


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论