我使用以下查询进行一些时间计算。如果这种方式是最好的,那我就不是真的。你知道更好的方法来获得相同的结果吗?
Select
((Time_To_Sec(TimeDiff(arbeitszeit.ezeit, arbeitszeit.szeit)) / 3600) -
arbeitszeit.arbzpause) AS Netto,
(CASE
WHEN ((arbeitszeit.szeit >= arbeitszeit.gs) AND (arbeitszeit.ezeit <=
arbeitszeit.ge) AND (DayOfWeek(arbeitszeit.arbzstart) <> 1) AND
(DayOfWeek(arbeitszeit.arbzstart) <> 7) AND (arbeitszeit.arbszart <>
'Feiertag')) THEN ((Time_To_Sec(TimeDiff(arbeitszeit.ezeit,
arbeitszeit.szeit)) / 3600) - arbeitszeit.arbzpause)
WHEN ((arbeitszeit.szeit < arbeitszeit.gs) AND (arbeitszeit.ezeit >
arbeitszeit.gs) AND (arbeitszeit.ezeit <= arbeitszeit.ge) AND
(DayOfWeek(arbeitszeit.arbzstart) <> 1) AND
(DayOfWeek(arbeitszeit.arbzstart) <> 7) AND (arbeitszeit.arbszart <>
'Feiertag')) THEN ((Time_To_Sec(TimeDiff(arbeitszeit.ezeit, arbeitszeit.gs))
/ 3600) - arbeitszeit.arbzpause)
WHEN ((arbeitszeit.szeit >= arbeitszeit.gs) AND (arbeitszeit.szeit <
arbeitszeit.ge) AND (arbeitszeit.ezeit > arbeitszeit.ge) AND
(DayOfWeek(arbeitszeit.arbzstart) <> 1) AND
(DayOfWeek(arbeitszeit.arbzstart) <> 7) AND (arbeitszeit.arbszart <>
'Feiertag')) THEN ((Time_To_Sec(TimeDiff(arbeitszeit.ge, arbeitszeit.szeit))
/ 3600) - arbeitszeit.arbzpause) ELSE 0 END) AS IST,
If((arbeitszeit.arbszart = 'Kompensation'),
((Time_To_Sec(TimeDiff(arbeitszeit.ezeit, arbeitszeit.szeit)) / 3600) -
arbeitszeit.arbzpause), 0) AS Komp,
arbeitszeit.arbzgrpid AS arbzgrpid,
arbeitszeit.abszsvisor AS abszsvisor
FROM arbeitszeit
JOIN users ON arbeitszeit.arbzusrid = users.usrnr
ORDER BY arbzid
感谢您的帮助