Chcę zrobić skrypt który automatycznie będzie mi zliczał po podaniu godziny przyjscia i wyjścia czy są to godziny dzienne czy też nocne.
Przykład:
22:00 do 6:00 - godziny nocne (8 godzin)
5:45 - 14:00 - 15 min nocnych
21:45 - 6:30 - 8 godzin nocnych
18- 22:30 - 30 min nocnych itd.
Dane są zapisywane w minutach 0 - 1440 :
godz przyjścia (kolumna od) 22:00 - 1320 min godz wyjścia (kolumna do) 6:00 - 360min
Znalazłem coś takiego (w oryginale nie działa) pomodyfikowalem ale skrypt nie działa jak powinien - przy danych od 5:45 - 14:00 wykazuje 8:15 min nocnych... a ma być 15 min
istotą problemu jest uchwycić jeżeli dane w kolumnach od i do znajdują się w przedziale <360 i 1320< zapewniam nie jest to takie proste!
$Evening_start = 18*60*60; $Evening_end = 22*60*60; $Night_start = 22*60*60; $Night_end = 06*60*60; $Midnight = 24*60*60; $Zero = 0; SELECT date , IF((`od` <> NULL), TIME_FORMAT( SEC_TO_TIME( GREATEST($Zero, LEAST($Night_end,TIME_TO_SEC(`do`)) - GREATEST($Zero,TIME_TO_SEC(`od`))) + GREATEST($Zero,LEAST($Midnight,TIME_TO_SEC(`do`)) - GREATEST($Night_start,TIME_TO_SEC(`od`)))), '%H:%i'), TIME_FORMAT( SEC_TO_TIME( (GREATEST($Zero, LEAST($Night_end,$Midnight) - GREATEST($Zero,TIME_TO_SEC(`od`))) + GREATEST($Zero, LEAST($Night_end,TIME_TO_SEC(`do`)))) + GREATEST($Zero, $Midnight - GREATEST($Night_start, TIME_TO_SEC(`od`))) + GREATEST($Zero, LEAST($Midnight, TIME_TO_SEC(`do`)) - GREATEST($Night_start,$Zero))), '%H:%i')) AS `night`". " FROM lista_daily WHERE ( `od_min` >= 840 OR `od_min` <= 360) AND `od_min` IS NOT NULL AND `id`=".$dayid."");