Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Określenie deadline jako odstępu czasowego
Asmox
post
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):
  1. Zadania z deadlinem jednorazowe. Wpisujesz co do zrobienia, na kiedy, a następnie program liczy wskaźnik w/w wzorem. Po zrobieniu zadanie jest kasowane z bazy
  2. Zadanie z deadlinem powtarzalne - np "Zapłać za Internet" co miesiąc. Wskaźnik dla tego zadania jest również określony w/w wzorem. Po wykonaniu zadanie nie jest kasowane z bazy, tylko jego data utworzenia zmienia się na aktualną, dzięki czemu wskaźnik jest poprawnie obliczany


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?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:19