热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

统计当前日期距离月底有多少工作日的函数_MySQL

统计当前日期距离月底有多少工作日的函数
bitsCN.com
统计当前日期距离月底有多少工作日的函数 今天遇到运营那边有个需求,需要找出注册用户排除周六周日的每日打卡情况(包含不是周六周日的当天),当时的第一反应是想找一个能实现排除周六周日能计算到月底还有多少工作日的函数,找了半天没找到,还是自己写一个吧。我崇拜的王大哥也写了一个,贴出来和大家分享。代码如下: DROP FUNCTION IF EXISTS count_day_left ; DELIMITER //CREATE FUNCTION count_day_left( f_date DATETIME ) RETURNS INT DETERMINISTIC BEGIN /* Purpose: 统计指定日期距离月底还有多少个工作日,节假日未排除,用于打卡统计的过滤函数 Useage: select count_day_left(&#39;2012-09-10&#39;);*/ DECLARE start_day INT; DECLARE end_day INT; DECLARE count_day INT DEFAULT 0; DECLARE tmp_date DATE DEFAULT DATE(f_date); SET end_day=DAY(LAST_DAY(f_date)); SET start_day=DAY(f_date); WHILE start_day<=end_day DO IF ( (DAYOFWEEK(tmp_date) = 1) OR (DAYOFWEEK(tmp_date) = 7)) THEN SET tmp_date=DATE_ADD(tmp_date,INTERVAL 1 DAY); SET start_day=start_day+1; ELSE SET tmp_date=DATE_ADD(tmp_date,INTERVAL 1 DAY); SET start_day=start_day+1; SET count_day=count_day+1; END IF; END WHILE; RETURN count_day; END //DELIMITER ; DROP FUNCTION IF EXISTS count_day_left;DELIMITER //CREATE FUNCTION count_day_left(f_date DATE)RETURNS INTREADS SQL DATABEGINRETURN DATEDIFF(LAST_DAY(f_date),f_date)-(WEEK(LAST_DAY(f_date))-WEEK(f_date))*2+IF(WEEKDAY(f_date)=6,0,1)-IF(WEEKDAY(LAST_DAY(f_date))=5,1,0);END //DELIMITER ; bitsCN.com
推荐阅读
author-avatar
风云变幻1892_602
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有