Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dodawanie godzin i minut w oracle

146 views
Skip to first unread message

kacper

unread,
Aug 15, 2013, 4:52:01 PM8/15/13
to
Mam kilka pozycji np.zapisanych jako liczby dziesietne np
1.41 oznacza 1 godz 41 minut
6.20 oznacza 6 godz 20 min
1.40 ................................
0.20 ..............................
itd
Chcia�bym doda� te wszystkie pozycje i wynik poda� w postaci 9.01 .
Najpro�ciej chyba b�dzie zamieni� to wszystko na minuty i potem uzyskany
wynik podzielic modulo 60 w celu wyodrebnienia godzin i minut .
Ten spos�b wydaje mi sie najprostszy . Macie jakies inne sugestie ? Jak
mozna zrealizowa� to najszybciej ?
Ja oczywiscie to napisz� ale szukam bardzo prostegoi i "kr�tkiego"
rozwi�zania .

Pom�zcie

Kacper



KO

unread,
Aug 16, 2013, 4:31:34 AM8/16/13
to
On 2013-08-15, kacper <kacpe...@wp.pl> wrote:
> Mam kilka pozycji np.zapisanych jako liczby dziesietne np
> 1.41 oznacza 1 godz 41 minut
> 6.20 oznacza 6 godz 20 min
> 1.40 ................................
> 0.20 ..............................
> itd
> Chcia³bym dodaæ te wszystkie pozycje i wynik podaæ w postaci 9.01 .
> Najpro¶ciej chyba bêdzie zamieniæ to wszystko na minuty i potem uzyskany
> wynik podzielic modulo 60 w celu wyodrebnienia godzin i minut .
> Ten sposób wydaje mi sie najprostszy . Macie jakies inne sugestie ? Jak
> mozna zrealizowaæ to najszybciej ?
> Ja oczywiscie to napiszê ale szukam bardzo prostegoi i "krótkiego"
> rozwi±zania .

No chyba najprosciej wlasnie tak zrobic: na minuty, suma, z minut.
Np. tak (skopiowane z pewnego systemu ktorego uzywam
gdzie tak wlasnie trzymaja czas):

na minuty:
(trunc(num)*60)+((num-trunc(num))*100)

I z powrotem:
trunc(mm/60)+ (((mm/60)-trunc(mm/60))/100*60);

pzdr.

--
ko

kacper

unread,
Aug 16, 2013, 2:12:38 PM8/16/13
to

Użytkownik "kacper" <kacpe...@wp.pl> napisał w wiadomości
news:kujf15$thc$1...@news.task.gda.pl...
> Mam kilka pozycji np.zapisanych jako liczby dziesietne np
> 1.41 oznacza 1 godz 41 minut
> 6.20 oznacza 6 godz 20 min
> 1.40 ................................
> 0.20 ..............................
> itd
> Chciałbym dodać te wszystkie pozycje i wynik podać w postaci 9.01 .
> Najprościej chyba będzie zamienić to wszystko na minuty i potem uzyskany
> wynik podzielic modulo 60 w celu wyodrebnienia godzin i minut .
>
> Kacper
>
>
>
Zrobiłem to tak

Zamiana na minuty
CREATE OR REPLACE FUNCTION BAZA.zz_gm (k NUMBER) RETURN NUMBER IS godz
INTEGER;

minuty INTEGER;

BEGIN

IF k IS NULL OR k < 0

THEN

RETURN 0;

END IF;


godz := FLOOR (k);

minuty := (k - FLOOR (k)) * 100;

RETURN godz * 60 + minuty;

END zz_gm;


Zamiana na pierwotną postać

floor((sum(zz_gm(godzr)))/60) ||'.'||mod((sum(zz_gm(godzr))),60)


Maseł

unread,
Aug 19, 2013, 7:54:30 PM8/19/13
to
W dniu 2013-08-15 22:52, kacper pisze:
> Mam kilka pozycji np.zapisanych jako liczby dziesietne np
> 1.41 oznacza 1 godz 41 minut
> 6.20 oznacza 6 godz 20 min
> 1.40 ................................
> 0.20 ..............................
> itd
> Chcia�bym doda� te wszystkie pozycje i wynik poda� w postaci 9.01 .
> Najpro�ciej chyba b�dzie zamieni� to wszystko na minuty i potem uzyskany
> wynik podzielic modulo 60 w celu wyodrebnienia godzin i minut .
> Ten spos�b wydaje mi sie najprostszy . Macie jakies inne sugestie ? Jak
> mozna zrealizowaďż˝ to najszybciej ?
> Ja oczywiscie to napisz� ale szukam bardzo prostegoi i "kr�tkiego"
> rozwi�zania .


Oracle 9i i wyzsze posiada tzw. "typy interwa�owe". wydaja sie idealne
do tego prostego opisu...

Pozdrawiam

Mariusz Masewicz

kacper

unread,
Aug 20, 2013, 4:41:59 PM8/20/13
to

U�ytkownik "Mase�" <mma...@poczta.onet.pl> napisa� w wiadomo�ci
news:44cca70b258e5f16...@masel.cs.put.poznan.pl...
>W dniu 2013-08-15 22:52, kacper pisze:
>> Mam kilka pozycji np.zapisanych jako liczby dziesietne np
>> 1.41 oznacza 1 godz 41 minut
>> 6.20 oznacza 6 godz 20 min
>> 1.40 ................................
>> 0.20 ..............................
>> itd
>> Chcia�bym doda� te wszystkie pozycje i wynik poda� w postaci 9.01 .
>> Najpro�ciej chyba b�dzie zamieni� to wszystko na minuty i potem uzyskany
>> wynik podzielic modulo 60 w celu wyodrebnienia godzin i minut .
>> Ten spos�b wydaje mi sie najprostszy . Macie jakies inne sugestie ? Jak
>> mozna zrealizowa� to najszybciej ?
>> Ja oczywiscie to napisz� ale szukam bardzo prostegoi i "kr�tkiego"
>> rozwi�zania .
>
>
> Oracle 9i i wyzsze posiada tzw. "typy interwa�owe". wydaja sie idealne
> do tego prostego opisu...
>
> Pozdrawiam
>
> Mariusz Masewicz
>
Zadanie oczywiscie ju� rozwi�zane . Jednak zainteresowa�y mnie te "typy
interwa�owe " .Czy m�g�by� podac link do przyk�adowego opisu ( ew.
zastosowania) w intenecie . Ja u�ywam 11g .

kacper


Maseł

unread,
Aug 21, 2013, 5:30:56 PM8/21/13
to
W dniu 2013-08-20 22:41, kacper pisze:
> U�ytkownik "Mase�" <mma...@poczta.onet.pl> napisa� w wiadomo�ci
> news:44cca70b258e5f16...@masel.cs.put.poznan.pl...
>> W dniu 2013-08-15 22:52, kacper pisze:
>>> Mam kilka pozycji np.zapisanych jako liczby dziesietne np
>>> 1.41 oznacza 1 godz 41 minut
>>> 6.20 oznacza 6 godz 20 min
>>> 1.40 ................................
>>> 0.20 ..............................
[...]
>> Oracle 9i i wyzsze posiada tzw. "typy interwa�owe". wydaja sie idealne
>> do tego prostego opisu...
>>
>> Pozdrawiam
>>
>> Mariusz Masewicz
>>
> Zadanie oczywiscie ju� rozwi�zane . Jednak zainteresowa�y mnie te "typy
> interwa�owe " .Czy m�g�by� podac link do przyk�adowego opisu ( ew.
> zastosowania) w intenecie . Ja u�ywam 11g .

http://www.oracle-base.com/articles/misc/oracle-dates-timestamps-and-intervals.php

Pozdrawiam

Mariusz Masewicz

0 new messages