![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć!
Potrzebuję napisać funkcję w SQL, która policzy mi pewien wskaźnik. Piszę aplikację checklisty, w której zadania szeregują się pod względem najważniejszych, a określa to pewien czynnik który jest procentem. Algorytm, który wymyśliłem, zakłada że czynnik dla zadań z deadlinem (ustawionym czasem kiedy coś musi być zrobione) w momencie utworzenia ma wartość 0% a dla swojego deadlinu 100%. Zatem dla tego rodzaju zadań (bo jest ich kilka, a czynnik musi być jeden żeby je wszystkie uszeregować) wzór na obliczenie "magicznego czynnika" wygląda tak: Kod (data_aktualna - data_utworzenia) w minutach -------------------------------------- deadline Do tej pory `deadline` był kolumną w bazie, do której wpisywane były minuty po których zadanie miało być wykonane. Wiem że to pokrętne, ale chodzi o to że niektóre zadania mogą dodatkowo być wykonywalne cyklicznie, więc tak mi było wygodniej. Problem w tym, że wszystko się sypie, gdy zadanie ma być np wykonywane co miesiąc. Wartość pola `deadline`, która jest w minutach, zależy od ilości dni do ukończenia celu, a ilość dni zależy przecież od aktualnego miesiąca! Zatem niemożliwe jest ustawienie tego na sztywno. Podsumowując problem: Mam dwa rodzaje zadań (w rzeczywistości 4, ale problem tyczy się dwóch następujących):
No i to nie działa gdy trzeba coś robić np co miesiąc - bo tego nie da się w prosty sposób zamienić na ilość dni / minut do końca. Czyli jeżeli to zadanie ma deadline wpisany na X minut, to raz będzie to faktycznie miesiącem, a raz nie. Pomysł na rozwiązanie Moim pomysłem na rozwiązanie jest zmiana rodzaju pola `deadline` na DATETIME, który zamiast daty będzie przechowywał ilość czasu (ile lat, ile miesięcy, ile dni, godzin, minut i sekund mimo że sekund nie potrzebuję) do planowanego wykonania. Aby zamienić to na minuty, myślałem o tym żeby napisać coś w rodzaju funkcji w MySQLu, która będzie analizować aktualną datę (jaki miesiąc) i ewentualnie przeliczać to na potrzebne mi minuty. Jeżeli to co napisałem jest jasne - czy będzie to dobre rozwiązanie? -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:19 |