Mysql自定义函数返回去年同周的周一

mysql自定义函数
## 返回in_day 所在周的星期一的日期
DELIMITER $$
CREATE FUNCTION get_first_day_of_week(in_day DATE)
RETURNS DATE
BEGIN
    DECLARE l_numofweek  INT;
    DECLARE l_dayofweek  DATE;
   
    SET l_numofweek = (DAYOFWEEK(in_day) - 2 + 7) % 7;
   
    SET l_dayofweek = DATE_SUB(in_day , INTERVAL l_numofweek DAY );
     
   
    RETURN l_dayofweek;   
END;
$$
DELIMITER ;






##  i_day为一年中的第n周
##  返回去年的第n周的周一的日期
DELIMITER $$
CREATE FUNCTION get_first_of_week_last_year (i_day DATE) RETURNS DATE
BEGIN
  DECLARE l_week_of_year INT ;
  DECLARE l_last_year VARCHAR (100) ;
  DECLARE l_day DATE ;
  SET l_week_of_year = WEEKOFYEAR(i_day) ;
  SET l_last_year = CONCAT(
    (DATE_FORMAT(i_day, '%Y') - 1),
    '-01-01'
  ) ;
  SET l_day = STR_TO_DATE(l_last_year, '%Y-%m-%d') ;
  SET l_day = get_first_day_of_week (l_day) ;
  SET l_day = DATE_ADD(
    l_day,
    INTERVAL l_week_of_year - 1 WEEK
  ) ;
  RETURN l_day ;
 
END ;
$$

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29121762/viewspace-1672044/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29121762/viewspace-1672044/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值