sql >> データベース >  >> RDS >> Mysql

15日前の土曜日を営業日としてカウントし、他の日付をスキップします

    以下のコードを使用して、要件に応じて稼働日数をカウントできます-

    CREATE FUNCTION FN_CNT_Working_days(StartDate DATE,
                                        EndDate   DATE) 
    RETURNS INT
    BEGIN
         DECLARE WORKING_DAYS INT;
         SELECT
       (DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) + 1)
      -(FLOOR(DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16)))/7) * 2)
      -(CASE WHEN DAYNAME(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) = 'Sunday' THEN 1 ELSE 0 END)
      -(CASE WHEN DAYNAME(EndDate) = 'Saturday' THEN 1 ELSE 0 END) 
       +
       (DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate) + 1)
      -(FLOOR(DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate)/7))
      -(CASE WHEN DAYNAME(StartDate) = 'Sunday' THEN 1 ELSE 0 END)
         INTO WORKING_DAYS;
    
         RETURN (WORKING_DAYS);
    END;
    

    こちら フィドルです。また、このコードと一緒に休日の世話をする必要があります。



    1. PostgreSQL全文検索とトリグラムの混乱

    2. 続編の移行と初期化を処理するためのワークフロー?

    3. 挿入時に挿入された行のIDを取得するにはどうすればよいですか?

    4. ドミノの秘密、またはドミノゲームデータモデル