首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >First_day last_day从1月份开始

First_day last_day从1月份开始
EN

Stack Overflow用户
提问于 2022-11-27 14:30:43
回答 1查看 24关注 0票数 0

我有以下查询,该查询正在按预期工作。我的问题是,如何在没有硬编码值的情况下,从1月开始获得特定年份的输出(即2023 )。

代码语言:javascript
复制
SELECT   TRUNC (ADD_MONTHS (SYSDATE, (LEVEL - 1)), 'MM') FIRST_DAY,
             LAST_DAY (ADD_MONTHS (SYSDATE, (LEVEL - 1))) LAST_DAY
      FROM   DUAL
CONNECT BY   LEVEL <= 12;

FIRST_DAY    LAST_DAY
01-NOV-22.    30-NOV-22
01-DEC-22     31-DEC-22
01-JAN-23     31-JAN-23
01-FEB-23     28-FEB-23
01-MAR-23     31-MAR-23
01-APR-23     30-APR-23
01-MAY-23     31-MAY-23
01-JUN-23     30-JUN-23
01-JUL-23     31-JUL-23
01-AUG-23     31-AUG-23
01-SEP-23     30-SEP-23
01-OCT-23     31-OCT-23
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 14:54:27

如果您想要一个特定的年份(2023年),您的查询应该如何知道它,除非您“哈达”它?它不一定是"2023“字面意思,但例如”明年,根据SYSDATE"),如本例中所示:

代码语言:javascript
复制
SQL> with starting_date (datum) as
  2    (select add_months(trunc(sysdate, 'yyyy'), 12) from dual)
  3  select          add_months(datum, level - 1)  first_day,
  4         last_day(add_months(datum, level - 1)) last_day
  5  from starting_date
  6  connect by level <= 12;

FIRST_DAY LAST_DAY
--------- ---------
01-JAN-23 31-JAN-23
01-FEB-23 28-FEB-23
01-MAR-23 31-MAR-23
01-APR-23 30-APR-23
01-MAY-23 31-MAY-23
01-JUN-23 30-JUN-23
01-JUL-23 31-JUL-23
01-AUG-23 31-AUG-23
01-SEP-23 30-SEP-23
01-OCT-23 31-OCT-23
01-NOV-23 30-NOV-23
01-DEC-23 31-DEC-23

12 rows selected.

SQL>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74590858

复制
相关文章

相似问题

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