关于取当季的相临两季

[复制链接]
查看11 | 回复9 | 2007-8-24 01:03:56 | 显示全部楼层 |阅读模式
本帖最后由 test_100 于 2016-12-5 15:52 编辑
今天的的日期: SYSDATE = 2016-12-05。当前的季节是:第4季。
想要这样的数据:
年份 季节
2016 3
2016 4
2017 1
如果
今天的的日期: SYSDATE = 2017-01-01。当前的季节是:第1季。
想要这样的数据:
年份 季节
2016 4
2017 1
2017 2

以此类推,也就是当季的前后相临的季节,谢谢!




回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层

如下:

SQL> select to_char(to_date('2016-12-05', 'yyyy-mm-dd'), 'Q') dt1,
2 to_char(to_date('2017-01-01', 'yyyy-mm-dd'), 'Q') dt2
3from dual;
DT1 DT2
--- ---
4 1
SQL>

回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
本帖最后由 test_100 于 2016-12-5 15:56 编辑
bell6248 发表于 2016-12-5 15:52
如下:

可能是我没表述清楚,我需要的是这样的数据奥:
年份 季节
2016 4
2017 1
2017 2
也就是当季和当季的相临的前后两季,谢谢您的回复。

回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
你有日期就可以确定是那个季度的, 目前你的描述看不懂

回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
我理解的意思是通过当前日期,查询出上一季度、当前季度、下一季度,共3条记录是吧?
回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
jrtongxin5266 发表于 2016-12-5 16:19
我理解的意思是通过当前日期,查询出上一季度、当前季度、下一季度,共3条记录是吧?

是的

但是,年份也要变的。

回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
本帖最后由 jrtongxin5266 于 2016-12-5 16:30 编辑
我只会这种笨方法:
Select to_char(add_months(sysdate,-3),'yyyy'),to_char(add_months(sysdate,-3),'q') from dual
union all
select to_char(sysdate,'yyyy'),to_char(sysdate,'q') from dual
union all
Select to_char(add_months(sysdate,3),'yyyy'),to_char(add_months(sysdate,3),'q') from dual

回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
jrtongxin5266 发表于 2016-12-5 16:26
我只会这种笨方法:
Select to_char(add_months(sysdate,-3),'yyyy'),to_char(add_months(sysdate,-3),'q' ...

谢谢!思路不错!
回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
select to_char(add_months(sysdate,(level - 2) * 3),'yyyy') "年",to_char(add_months(sysdate,(level - 2) * 3),'q') "季度" from dual
connect by level <= 3
回复

使用道具 举报

千问 | 2007-8-24 01:03:56 | 显示全部楼层
diaokewei 发表于 2016-12-5 16:38
select to_char(add_months(sysdate,(level - 2) * 3),'yyyy') "年",to_char(add_months(sysdate,(level -...

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行