Obliczenia związane z czasem i datą?

Użytkowanie programu bazodanowego

Obliczenia związane z czasem i datą?

Postprzez pawel00_17 » Pn mar 15, 2010 10:31 am

Mam taki problem, muszę stworzyć bazę w której będę przechowywał Datę i Godzinę wejścia i wyjście pracowników.
Data i godzina przechowywana w osobnych polach.
ID / Data_we / Godzina_we / Data_wy / Godzina_wy / ID_Pracownika

Potrzebuję wykonać obliczenie czasu od wejścia do wyjścia. Jestem w tym temacie zielony i proszę o pomoc oraz sugestie jak wykonać taki projekt. :idea:
PAWEL
OpenOffice 3.1 na Windows Vista
pawel00_17
 
Posty: 6
Dołączył(a): Pn lut 08, 2010 11:28 am

Re: Obliczenia związane z czasem i datą?

Postprzez kraf101 » Pn mar 15, 2010 2:31 pm

pawel00_17 napisał(a):Mam taki problem, muszę stworzyć bazę w której będę przechowywał Datę i Godzinę wejścia i wyjście pracowników.
Data i godzina przechowywana w osobnych polach.
ID / Data_we / Godzina_we / Data_wy / Godzina_wy / ID_Pracownika

Potrzebuję wykonać obliczenie czasu od wejścia do wyjścia. Jestem w tym temacie zielony i proszę o pomoc oraz sugestie jak wykonać taki projekt. :idea:


Ta data i godzina w odrębnych polach, to trochę bez sensu bo możesz skorzystać z typy TIMESTAMP i mieć wszystko w jednym.
Czas pracy obliczasz funkcją np
Kod: Zaznacz cały   Rozszerz widokZwiń widok
DATEDIFF('mi', "we","wy")/60.0


Oczywiście jak pan psor każe żeby było w oddzielnych polach, można:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
DATEDIFF('mi', "Data_we" || ' ' || "Godzina_we","Data_wy" || ' ' || "Godzina_wy")/60.0
OpenOffice 2.4/3.1 na Ubuntu
kraf101
 
Posty: 7
Dołączył(a): Pn lut 22, 2010 5:08 pm

Re: Obliczenia związane z czasem i datą?

Postprzez pawel00_17 » Pn mar 15, 2010 4:14 pm

Ta data i godzina w odrębnych polach, to trochę bez sensu bo możesz skorzystać z typy TIMESTAMP i mieć wszystko w jednym.
Czas pracy obliczasz funkcją np
Kod: Zaznacz cały Rozszerz widokZwiń widok
DATEDIFF('mi', "we","wy")/60.0
Oczywiście jak pan psor każe żeby było w oddzielnych polach, można:
Kod: Zaznacz cały Rozszerz widokZwiń widok
DATEDIFF('mi', "Data_we" || ' ' || "Godzina_we","Data_wy" || ' ' || "Godzina_wy")/60.0
oznaczenie "mi" to interwał? z tego co zdążyłem się dowiedzie to interwał przyjmę argumenty:
yyyy Rok
q Kwartał
m Miesiąc
y Dzień roku
d Dzień
w Dzień tygodnia
ww Tydzień
g Godzina
n Minuty
s Sekundy

gdybyś mugł jeszcze opisac do czego służy /60.0??
PAWEL
OpenOffice 3.1 na Windows Vista
pawel00_17
 
Posty: 6
Dołączył(a): Pn lut 08, 2010 11:28 am

Re: Obliczenia związane z czasem i datą?

Postprzez kraf101 » Pn mar 15, 2010 6:32 pm

Trochę nie tak.

DATEDIFF(string, datetime1, datetime2)[2]

returns the count of units of time elapsed from datetime1 to datetime2. The string indicates the unit of time and can have the following values 'ms'='millisecond', 'ss'='second','mi'='minute','hh'='hour', 'dd'='day', 'mm'='month', 'yy' = 'year'. Both the long and short form of the strings can be used.


Więcej możesz przeczytać: http://www.hsqldb.org/doc/guide/ch09.html

Czyli funkcja ta, zwraca całkowitą liczbę jednostek pomiędzy datetime1 i datetime2.
Jeżeli pan Ziutek pracował dzisiaj od 8:00 do 16:00 to możesz obliczyć ilość przepracowanych godzin:
DATEDIFF('hour', '2010-03-15 08:00', '2010-03-15 16:00'); => 8

Jeżeli na Nowy Rok pan Ziutek się pół godziny spóźni, to:
DATEDIFF('hour', '2011-01-01 08:30', '2011-01-01 16:00'); => 7

Więc jeżeli chcesz uczciwie pana Ziutka to powinieneś zliczyć ilość minut jakie uczciwie przepracował:
DATEDIFF('minute', '2011-01-01 08:30', '2011-01-01 16:00'); => 450

Żeby obliczyć ilość przepracowanych godzin, to dzielisz przez 60. Jednak wynik dzielenia dwóch liczb całkowitych da wynik również całkowity (obcięty) 450 / 60 => 7.

Żeby uzyskać wynik (po przecinku) przynajmniej jedna z liczb musi być typu float (po przecinku), to najłatwiej jest napisać, że
60 jest liczbą zmiennopozycyjną - "60.0". Wtedy:
DATEDIFF('minute', '2011-01-01 08:30', '2011-01-01 16:00')/60.0; => 7.5
OpenOffice 2.4/3.1 na Ubuntu
kraf101
 
Posty: 7
Dołączył(a): Pn lut 22, 2010 5:08 pm

Re: Obliczenia związane z czasem i datą?

Postprzez pawel00_17 » Śr mar 17, 2010 2:44 pm

Dzięki za pomoc :D sprawę liczenia czasu już mam za sobą :D
Maj jednak kolejną sprawę do wykonania. :?

W formularzu mam pole data i godzina w chwili obecnej dane są wprowadzane ręcznie a muszę je wprowadzać z automatu.
Użytkownik formularza nie powinien mieć możliwości wprowadzania informacji ręcznie pola: 1,0 nie są związane z tematem więc można je zignorować.
Podejrzewam że muszę wykonać kwerendę która wprowadzi dane do odpowiednich pół w momencie kliknięcia przycisku ZAPISZ.
Niestety w temacie Pytchona, Javy jestem laikiem. Za pomoc z góry dzięki. :D
Załączniki
Fotka.jpg
PrtSc
Fotka.jpg (15.3 KiB) Przeglądane 4609 razy
PAWEL
OpenOffice 3.1 na Windows Vista
pawel00_17
 
Posty: 6
Dołączył(a): Pn lut 08, 2010 11:28 am

Re: Obliczenia związane z czasem i datą?

Postprzez kraf101 » Śr mar 17, 2010 9:50 pm

Pisałem przecież żeby doczytać.

Kod: Zaznacz cały   Rozszerz widokZwiń widok
INSERT INTO tabela (Data_we, Godz_we, id_prac) VALUES (curdate(), curtime(), 876);


Podobnie przy wypisujemy wyjście pracownika. Używamy polecenia UPDATE tablica ...WHERE ...
DOCZYTAĆ i POKOMBINOWAĆ. Podstawy użycia makr i przycisków jest troche niżej, pokombinować i użyć analogicznie.

Dalej pracy domowej już nie odrabiam :mrgreen:
OpenOffice 2.4/3.1 na Ubuntu
kraf101
 
Posty: 7
Dołączył(a): Pn lut 22, 2010 5:08 pm


Powrót do Base

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość