MySql - 以月为单位的工作日数或具有加权假期的todate

时间:2017-09-07 09:10:41

标签: mysql sql

我需要使用MySQL计算一个月或当前日期的工作日数。

工作日如此称重:
周一至周五:1 周六:0.5
太阳和假期:0

我有一张桌子,t_holiday,其中包含假期(包括星期日,但不包括星期六),因此:

_______________________________
|holiday_date | holiday_desc  |
|-------------|---------------|
|2017-12-31   | Sunday Off    | 
|2017-12-25   | Christmas Day |
|2017-12-24   | Sunday Off    |
------------------------------- (and so on)

这是否可以使用mysql?如果需要的话,我可以将周六添加到t_holiday。

1 个答案:

答案 0 :(得分:2)

是的,可能。你想要的是什么 工作天数=月份天数 - 节假日 - 星期六(不是假期)* 0.5

我能想到的最简单的方法是:
1.是假日表 t_holiday
2.将星期六放在假期表中 t_holiday
3.将另一列 holiday_weight ,其中 holiday_weight 放入正常假日或星期日= 1,将 holiday_weight 放入星期六= 0.5。

您的答案就是工作天数=月份天数 - 数量(假期*重量)

在Sql中说二月份将是:

SELECT DAY(LAST_DAY('2015-2-1')) - 
SELECT (SUM(holiday_weight)) FROM t_holiday WHERE YEAR(holiday_date) = my_year AND MONTH(holiday_date) = my_month)

如果你想要的是约会,那么:

SELECT DAY(CURDATE()) - 
SELECT (SUM(holiday_weight)) FROM t_holiday WHERE YEAR(holiday_date) = YEAR(CURDATE()) AND MONTH(holiday_date) = MONTH(CURDATE()))