程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 統計當前日期距離月底有多少工作日的函數

統計當前日期距離月底有多少工作日的函數

編輯:MySQL綜合教程


統計當前日期距離月底有多少工作日的函數   今天遇到運營那邊有個需求,需要找出注冊用戶排除周六周日的每日打卡情況(包含不是周六周日的當天),當時的第一反應是想找一個能實現排除周六周日能計算到月底還有多少工作日的函數,找了半天沒找到,還是自己寫一個吧。我崇拜的王大哥也寫了一個,貼出來和大家分享。代碼如下: www.2cto.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('2012-09-10'); */   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 ;   www.2cto.com   DROP FUNCTION IF EXISTS count_day_left; DELIMITER // CREATE FUNCTION count_day_left(f_date DATE) RETURNS INT READS SQL DATA BEGIN RETURN 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 ;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved