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

本文介绍了在数据库中通过两种不同方法获取当前周的起始和结束日期:一种是使用TO_CHAR结合DECODE和TO_NUMBER函数;另一种是利用NEXT_DAY与SUBSTR函数组合。这两种方法可以帮助快速确定一周的时间范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

很多的查询条件和统计都需要求得一周的时间段,也就是星期一到星期日的时间段, 我们用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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值