oracle使用to_char和next_day函数得到本周的第一天和最后一天日期

oracle使用to_char和next_day函数得到本周的第一天和最后一天日期

 

准确来说一个礼拜是从星期日开始到星期六结束的,而我们自己的习惯都是按一个礼拜的第一天为星期一,最后一天为星期日来的。

很多的查询条件和统计都需要求得一周的时间段,也就是星期一到星期日的时间段, 我们用to_char和next_day两个函数分别可以求得第一天和最后一天的日期。

1、TO_CHAR 结合 DECODE、TO_NUMBER 函数求得

/** 使用TO_CHAR(SYSDATE,'D')可以求得当前日期是一周的第几天 
    得到的结果是星期日开始作为第1天的,
    那么星期一就是第2天,星期日就是第8天
*/

SELECT  TO_CHARSYSDATE , 'YYYY-MM-DD' ) 今天,  
       DECODE( TO_CHAR( SYSDATE, 'D'),
               '1', '星期日',
               '2', '星期一',
               '3', '星期二',
               '4', '星期三',
               '5', '星期四',
               '6', '星期五',
               '7', '星期六') 星期几,
         TO_CHARSYSDATE -  TO_NUMBERTO_CHAR( SYSDATE, 'D') ) + 2, 'YYYY-MM-DD' ) 星期一,
         TO_CHARSYSDATE -  TO_NUMBERTO_CHAR( SYSDATE, 'D') ) + 8, 'YYYY-MM-DD' ) 星期日
   FROM  DUAL

2、NEXT_DAY  结合 SUBSTR 函数求得

/** SUBSTR代替DECODE函数
    NEXT_DAY 函数可以指定当前日期的下一个星期几的日期
    比如:今天是11-25日,星期六,那么 NEXT_DAY(sysdate,'星期一') 
    得到的日期就是11-27,那么这个星期一的日期就是 11-27 减去 7天
    而星期日的日期就是11-27减去1天
*/

SELECT  TO_CHARSYSDATE , 'YYYY-MM-DD' ) 今天,  
        '星期'|| SUBSTR( '日一二三四五六', TO_NUMBER( TO_CHAR( SYSDATE, 'D')),1) 星期几,
        TO_CHAR( NEXT_DAY( sysdate, '星期一') - 7, 'YYYY-MM-DD') 星期一,
        TO_CHAR( NEXT_DAY( sysdate, '星期一') - 1 , 'YYYY-MM-DD') 星期日
   FROM  DUAL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值