Obliczenia związane z czasem i datą?

Użytkowanie programu bazodanowego
pawel00_17
Posty: 6
Rejestracja: pn lut 08, 2010 11:28 am

Obliczenia związane z czasem i datą?

Post autor: pawel00_17 »

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
kraf101
Posty: 7
Rejestracja: pn lut 22, 2010 5:08 pm

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

Post autor: kraf101 »

pawel00_17 pisze: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

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

DATEDIFF('mi', "Data_we" || ' ' || "Godzina_we","Data_wy" || ' ' || "Godzina_wy")/60.0
OpenOffice 2.4/3.1 na Ubuntu
pawel00_17
Posty: 6
Rejestracja: pn lut 08, 2010 11:28 am

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

Post autor: pawel00_17 »

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
kraf101
Posty: 7
Rejestracja: pn lut 22, 2010 5:08 pm

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

Post autor: kraf101 »

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
pawel00_17
Posty: 6
Rejestracja: pn lut 08, 2010 11:28 am

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

Post autor: pawel00_17 »

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
PrtSc
PrtSc
Fotka.jpg (15.3 KiB) Przejrzano 6014 razy
PAWEL
OpenOffice 3.1 na Windows Vista
kraf101
Posty: 7
Rejestracja: pn lut 22, 2010 5:08 pm

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

Post autor: kraf101 »

Pisałem przecież żeby doczytać.

Kod: Zaznacz cały

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
ODPOWIEDZ