[英]Sum days of person vacation in month or year
I have table of vacation:我有假期表:
`holiday` (`ID_holiday`, `holiday_start`, `holiday_end`, `holiday_typ`, `ID_empl`)
(18, '2019-07-07', '2019-07-18', 1, 6),
(19, '2019-06-25', '2019-06-25', 3, 5),
(20, '2019-05-30', '2019-06-05', 1, 6),
(21, '2019-05-30', '2019-05-30', 1, 5),
(22, '2019-06-30', '2019-06-30', 1, 5),
(23, '2019-06-30', '2019-06-30', 1, 6),
I need the number of days of vacation per month and year (sum).我需要每月和每年的假期天数(总和)。
Vacation is entered during weekends and public holidays - I only need the sum of working days.在周末和公共假期输入假期 - 我只需要工作日的总和。
holiday_typ 1.. 1 day假日类型 1.. 1 天
holiday_typ 3.. 0.5 day假日类型 3.. 0.5 天
Is it possible to solve it by mysql query or mysql+php?是否可以通过 mysql 查询或 mysql+php 来解决? Thanks
谢谢
I try.. for one employer:我尝试..为一位雇主:
for ($Day = 1; $Day <= $last_day_month; $Day++) {
$date = $YYYY.'-'.$Month.'-'.$Day;
$cz_svatek = cz_svatek ($Month, $Day, $YYYY); // return name of public holiday or ''
$sql = "SELECT *
FROM holiday
JOIN holiday_typ USING (ID_holiday_typ)
WHERE ID = ".$ID."
AND holiday_start <= '".$date."'
AND holiday_end >= '".$date."'";
$result = MySQL_Query($sql);
while ($dbMuf = MySQL_Fetch_Array($result)){
if( date("N", mktime(12, 0, 0, $Month, $Day, $YYYY)) < 6 && $cz_svatek == '') $holiday[$dbMuf["ID_dov_typ"]]++;
}
$sum_holiday = $holiday[1]+0.5*$holiday[3];
I did it this way (for now):我是这样做的(现在):
('Hol_len' from table holiday_typ... 0.5 || 1.0 || 0.0 ) (ID = ID_Empl) ('Hol_len' 来自表 holiday_typ... 0.5 || 1.0 || 0.0 ) (ID = ID_Empl)
$frs_day_y = mktime( 0, 0, 0, 1, 1, $YYYY );
$lst_day_y = mktime( 23, 59, 59, 12, 31, $YYYY );
for ($Day_mk = $frs_day_y; $Day_mk <= $lst_day_y; $Day_mk += 86400 ) {
$Day = date('d', $Day_mk);
$Month = date('n', $Day_mk);
$date = date('Y-m-d', $Day_mk);
$sql = "SELECT *
FROM dovolena
JOIN holiday_typ USING (ID_holiday_typ)
WHERE Hol_len > 0
AND holiday_start <= '".$date."'
AND holiday_end >= '".$date."'";
$result = MySQL_Query($sql);
while ($dbMuf = MySQL_Fetch_Array($result)){
if( date("N", $Day_mk) < 6 && cz_svatek ($Month, $Day, $YYYY) == '') {
if( isset($Hol_sum[$Month][$dbMuf["ID"]]) ) $Hol_sum[$Month][$dbMuf["ID"]] += $dbMuf["Dov_len"]; //$dbMuf["ID_dov_typ"]
else $Hol_sum[$Month][$dbMuf["ID"]] = $dbMuf["Hol_len"]+0;
if( isset($Hol_sum_y[$dbMuf["ID"]]) ) $Hol_sum_y[$dbMuf["ID"]] += $dbMuf["Hol_len"]; //$dbMuf["ID_dov_typ"]
else $Hol_sum_y[$dbMuf["ID"]] = $dbMuf["Hol_len"];
$id[$dbMuf["ID"]] = 1;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.