Как рассчитать доплату в ночные смены и по воскресеньям - PullRequest
0 голосов
/ 17 июня 2011

Я сделал таблицу в MySQL, хранящую время начала и окончания рабочих смен в типе datetime. Мне нужно рассчитать две вещи из них (в MySQL). Прежде всего, сколько минут кто-то работал в смену с 22:00 до 6:00, а также сколько минут кто-то работал в воскресенье. Воскресенье должно быть приоритетнее тех ночных времен, и оно не должно учитывать эти воскресные утра дважды.

Заранее спасибо.

D.

Я попробовал это кстати, но это не сработало:

SELECT *,
IF(DAYNAME(start)=DAYNAME(end),
    IF(TIME(start)<='6:00:00' AND TIME(end)<='6:00:00',TIME(end)-TIME(start),
        IF(TIME(start)>='22:00:00' AND TIME(end)>='22:00:00',TIME(end)-TIME(start),
            IF(TIME(start)>='6:00:00' AND TIME(end)<='22:00:00',0,
                IF(TIME(start)<='6:00:00' AND TIME(end)<='22:00:00','6:00:00'-TIME(start),
                    IF(TIME(start)>='6:00:00' AND TIME(end)>='22:00:00',TIME(end)-'22:00:00',NULL)
                    )
                )
            )
        ),
    IF(TIME(start)<='22:00:00' AND TIME(end)<='6:00:00','2:00:00'+TIME(end),
        IF(TIME(start)<='22:00' AND TIME(end)>='6:00:00','8:00:00',
            IF(TIME(start)>='22:00:00' AND TIME(end)<='6:00:00','24:00:00'-TIME(start)+TIME(end),
                IF(TIME(start)>='22:00:00' AND TIME(end)>='6:00:00','24:00:00'-TIME(start)+'6:00:00',NULL)
                )
            )
        )
    ) AS ExtraTime FROM `work`

Ответы [ 2 ]

1 голос
/ 17 июня 2011

минут отработано:

SELECT TIMESTAMPDIFF(MINUTE, `start_time`, `end_time`) FROM ... WHERE DAYOFWEEK(`start_time`) != 1

минут отработано в воскресенье:

SELECT TIMESTAMPDIFF(MINUTE, `start_time`, `end_time`) FROM ... WHERE DAYOFWEEK(`start_time`) = 1
0 голосов
/ 17 июня 2011

В PHP попробуйте этот код (предупреждение: он не был проверен):

<?php
$regularPay = 100; //100 dollars a day
$weekendPay = $regularPay + ($regularPay / 2); //150 dollars over weekend
$link = mysqli_connect("localhost","username","password");
mysqli_select_db("dbname");
$pay = date("w")==0 or date("w")==6 ? $weekendPay : $regularPay; //0=Sun, 6=Sat
$query = mysqli_query($link,"INSERT INTO pay SET employee='John Smith',pay='$pay'");
?>

Просто замените строки соответствующими значениями для вашего компьютера.

Ad @ м.

...