oracle中怎么判断为周五,求一年中所有星期五的日期

思路:首先求出一年中的第一天和最后一天,然后枚举出一年的日历,最后筛选出星期5的日期即可

-- 求出一年中的第一天和最后一天(这里是第二年的第一天,-1得到最后天)SQL> select trunc(sysdate,'y') first_day, add_months(trunc(sysdate,'y'),12) last_day from dual;

FIRST_DAY LAST_DAY

---------- ----------

2014-01-01 2015-01-01

-- 求出一年有多少天SQL> select add_months(trunc(sysdate,'y'),12)-trunc(sysdate,'y') num_days from dual;

NUM_DAYS

----------

365

-- 枚举日期SQL> select trunc(sysdate, 'y') + level - 1 tdate

from dual

connect by level <= add_months(trunc(sysdate, 'y'), 12) - trunc(sysdate, 'y'))

TDATE

----------

2014-01-01

2014-01-02

2014-01-03

2014-01-04

...

...

2014-12-27

2014-12-28

2014-12-29

2014-12-30

2014-12-31

-- 求星期SQL> select to_char(sysdate,'day') from dual;

TO_CHAR(SYSDATE,'DAY')

------------------------------------

thursday

SQL> select to_char(sysdate,'d') from dual;

T

-

5

这里注意

1 表示星期天

2 表示星期一

3 表示星期二

4 表示星期三

5 表示星期四

6 表示星期五

7 表示星期六

-- 求最后结果SQL> with x as

2 (select trunc(sysdate, 'y') + level - 1 tdate

3 from dual

4 connect by level <=

5 add_months(trunc(sysdate, 'y'), 12) - trunc(sysdate, 'y'))

6 select tdate, to_char(tdate, 'day') from x where to_char(tdate, 'd') = 6

7 ;

TDATE TO_CHAR(TDATE,'DAY')

---------- ------------------------------------

2014-01-03 friday

2014-01-10 friday

2014-01-17 friday

2014-01-24 friday

2014-01-31 friday

2014-02-07 friday

2014-02-14 friday

2014-02-21 friday

2014-02-28 friday

2014-03-07 friday

2014-03-14 friday

2014-03-21 friday

2014-03-28 friday

2014-04-04 friday

2014-04-11 friday

2014-04-18 friday

2014-04-25 friday

2014-05-02 friday

2014-05-09 friday

2014-05-16 friday

2014-05-23 friday

2014-05-30 friday

2014-06-06 friday

2014-06-13 friday

2014-06-20 friday

2014-06-27 friday

2014-07-04 friday

2014-07-11 friday

2014-07-18 friday

2014-07-25 friday

2014-08-01 friday

2014-08-08 friday

2014-08-15 friday

2014-08-22 friday

2014-08-29 friday

2014-09-05 friday

2014-09-12 friday

2014-09-19 friday

2014-09-26 friday

2014-10-03 friday

2014-10-10 friday

2014-10-17 friday

2014-10-24 friday

2014-10-31 friday

2014-11-07 friday

2014-11-14 friday

2014-11-21 friday

2014-11-28 friday

2014-12-05 friday

2014-12-12 friday

2014-12-19 friday

2014-12-26 friday

52 rows selected.

--求当月的第一个星期一和最后一个星期一SQL> select next_day(trunc(sysdate,'mm')-1,2),next_day(last_day(trunc(sysdate,'mm'))-7,2) from dual;

NEXT_DAY(T NEXT_DAY(L

---------- ----------

2014-01-06 2014-01-27

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值