需求:每年的1月1号为第一周的开始 哪怕只有一天
CREATE DEFINER=`dcfdev`@`%` FUNCTION `F_GET_WEEK_OF_DATE`(inday CHAR(100)) RETURNS INT(11)
BEGIN
DECLARE nowYear INT(11); -- 今年 -年
DECLARE nowWeek INT(11); -- 今年 -周
DECLARE oneWeek INT(11); -- 今年1月1号所在的周
SET nowYear = DATE_FORMAT(inday,'%Y');
SET oneWeek = WEEK(CONCAT(nowYear,'-01-01'),1); -- 获取今年1月1号所在的周 如果==0 那么是上一年的53周 那么获取的后边的周需要+1
SET nowWeek = WEEK(inday,1);
IF oneWeek=0 THEN SET nowWeek = nowWeek+1;
END IF;
IF nowWeek>53 THEN SET nowWeek = 53;
END IF;
RETURN nowWeek;
END$$
DELIMITER ;