oracle 日期计算

--计算当前日期的上周时间段

select (trunc(sysdate-7,'DD')-to_char(sysdate-7,'D')+1) as last_week_start_date,(trunc(sysdate-7,'DD')-to_char(sysdate-7,'D')+7) as last_week_end_date from dual

 

--根据年、月、周、星期计算日期

CREATE OR REPLACE FUNCTION get_date(
            y       number,     
            m       number,     
            idx     number,     
            dow     NUMBER    
)
return date
IS
    v_date      DATE;
    v_cnt       NUMBER  := 0;
BEGIN
    IF idx NOT BETWEEN 1 AND 5 THEN         RETURN NULL;
    END IF;

    v_date := TO_DATE( y || '-' || m, 'YYYY-MM' ) - 1;

    WHILE TRUE LOOP
        SELECT  next_day( v_date , dow )
        INTO    v_date
        FROM    dual ;
        v_cnt := v_cnt + 1;

        IF idx = v_cnt THEN     EXIT;
        END IF;

    END LOOP;

    RETURN v_date;
END;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值