Добрый день подскажите как правильно написать функцию
есть 2 куска скрипта
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
datediff (date(g.solvedate),date(g.date))
-truncate((case when date(g.solvedate)=date(g.date)
then (case when (weekday(g.date) = 5 or weekday(g.date) = 6)
then 1
else 0
end)
else case when (week(date(g.solvedate),1) = week(date(g.date),1) and date(g.solvedate)-date(g.date) < 7)
then (case when (weekday(g.solvedate) = 5)
then 1
when (weekday(g.solvedate) = 6)
then 2
else 0
end)
else case when (6-weekday(date(g.date)) = 0)
then 1
else 2
end
+case when (6-weekday(date(g.solvedate))=1)
then 1
when (6-weekday(date(g.solvedate))=0)
then 2
else 0
end
+(datediff (date(g.solvedate),date(g.date))-(6-weekday(date(g.date)))-1-weekday(date(g.solvedate)))/7*2
end
end),0) AS workday
###################################################################################################################
round((case when g1.workday = 0 and date(g.solvedate)=date(g.date)
then (case when time(g.date) < '06:00:00'
then time_to_sec (timediff (time(g.solvedate),'06:00:00'))
else time_to_sec (timediff(g.solvedate,g.date))
end)
when g1.workday = 1
then (case when time(g.date) < '06:00:00'
then time_to_sec (timediff (time(g.solvedate),'06:00:00'))
else time_to_sec (timediff(g.solvedate,g.date))
end)
when g1.workday = 2
then (case when time(g.date) < '06:00:00'
then time_to_sec (timediff ('18:00:00','06:00:00'))
else time_to_sec (timediff('18:00:00',time(g.date)))
end) + time_to_sec (timediff(time(g.solvedate),'06:00:00'))
else (case when time(g.date) < '06:00:00'
then time_to_sec (timediff ('18:00:00','06:00:00'))
else time_to_sec (timediff('18:00:00',time(g.date)))
end) + (g1.workday-2)*8 + time_to_sec (timediff(time(g.solvedate),'06:00:00'))
end) / 3600,1)
#######################################################################################################################
первый расчитывает разность между двумя датами без учета выоходных, второй расчитывает разность между двумя датами в рабочих часа (без учета не рабочего времени и выходных) Подскажите как написать функцию что бы считалась разность межу любыми двумя датами в рабочих часах что бы постоянно не подставлять разные даты в скрипт.