Strona 1 z 1
Operacje na datach
: ndz lis 21, 2010 7:22 pm
autor: tomo
Witam
Przeszukalem na forum ale nie znalazlem
Chcialbym dodac do daty np 2010-01-01 jakas liczbe dni (np 1000) czyli wynik powinen byc 2012-09-27
W jaki sposob mozna to wykonac?
Dziekuje i pozdrawiam
Re: Operacje na datach
: pn lis 22, 2010 11:39 am
autor: Jan_J
Z
http://www.hsqldb.org/doc/2.0/ wynika możliwość operowania na datach.
Por. dyskusja
http://dotal.wordpress.com/2007/04/26/d ... nd-oracle/
Żaden z tych sposobów nie działa w OpenOffice 3.2.1, w którym pokutuje HSQL 1.8.
Upgrade do 2.0 odbył się (? patrz niżej) w OpenOffice 3.3, który pojawi się na dniach (obecnie mamy Release Candidate 5).
//edit: w OOo 3.3 RC5 jest HSQL 1.8. Podobnie w bieżącym development snapshot 3.4. Tak że w tej chwili sam nie wiem.
Re: Operacje na datach
: pn lis 22, 2010 5:49 pm
autor: tomo
Jan_J pisze:Z
http://www.hsqldb.org/doc/2.0/ wynika możliwość operowania na datach.
Por. dyskusja
http://dotal.wordpress.com/2007/04/26/d ... nd-oracle/
Żaden z tych sposobów nie działa w OpenOffice 3.2.1, w którym pokutuje HSQL 1.8.
Upgrade do 2.0 odbył się (? patrz niżej) w OpenOffice 3.3, który pojawi się na dniach (obecnie mamy Release Candidate 5).
//edit: w OOo 3.3 RC5 jest HSQL 1.8. Podobnie w bieżącym development snapshot 3.4. Tak że w tej chwili sam nie wiem.
Witam
Janie moze ja napisze dokladnie na przykladzie co chce zrobic
Wiec mam data poczatkowa (zalozmy 2010-08-01)
Teraz bede dodawal rozne wartosci (np dni) ale mniej wiecej wzor bedzie wygladal : okres*30-30 (gdzie okres bedzie w miesiacach np 6,12,18)
Czyli jezeli chcemy w miesiacach to mamy : okres-1
To akurat pierdola z ktora mozna sobie latwo poradzic - nie ma znaczenia jakich jednostek uzywam
Do czego zmierzam - przy takim dodawaniu wartosci oczywiscie wynik jest bzdura (np na miesiacach wychodzi mi data 2010-13-01)
Jak to zrobic zeby np dla okresu 12 miesiecy dodac do tej daty poczatkowej 11 miesiecy (lub okolo 330 dni - nie chodzi o super dokladnie ten dzien za 330 dni - jak to bedzie 328 czy 332 to nic sie nie stanie - mniej wiecej powinen wyjsc miesiac wczesniej przed zakonczeniem terminu - dlatego sobie ustalilem 330)
Mam nadziej, ze to przedstawilem jasno
Prosze o jakies pomysly
Janie niestety Twoja odpowiec jest dwuznaczna i w zasadzie dalej nic z tego nie wiem

Dzieki
Re: Operacje na datach
: pn lis 22, 2010 6:10 pm
autor: Jan_J
Ja też.
W bazie suma wartości DATE + INTERVAL ma być typu DATE. I koniec.
Jakieś konwersje można by ostatecznie zaakceptować, ale co kombinuję w HSQLDB, to .... Error.
Re: Operacje na datach
: pn lis 22, 2010 11:15 pm
autor: tomo
Jan_J pisze:Ja też.
W bazie suma wartości DATE + INTERVAL ma być typu DATE. I koniec.
Wyjasnij mi to jak dziecku bo kombinuje od godziny i nic
Re: Operacje na datach
: wt lis 23, 2010 10:47 pm
autor: Jan_J
Miałem na myśli, że standard SQL-owej bazy danych przewiduje możliwość dodawania do siebie wartości daty i czasu trwania za pomocą operacji +. Najprościej jak to możliwe.
Oraz że bieżąca wersja HSQLDB, stanowiąca część OpenOffice Base, postulatu tego nie spełnia.
Można sobie poradzić deklarując funkcję w HSQL (czego nigdy nie robiłem, w sieci pewnie znalazłby się jakiś przykład), czekać na zmiłowanie -- czytaj: integrację z nowszym HSQL-em, albo przenieść bazę do systemu zewnętrznego, współpracującego z OpenOffice.
Re: Operacje na datach
: pt lis 26, 2010 7:49 pm
autor: eRestin
Podobnego rozwiązania co tomo poszukuję od dwóch dni, czyli mam w kwerendzie mam tabele "Data pobrania:" do której chciałbym zawsze dodawać 30 dni (bez względu na dni wolne), a wynik tej tabeli wyświetlić w np. "Data zwrotu:"
Czy istnieje jakieś rozwiązanie?
Re: Operacje na datach
: pt lis 26, 2010 11:03 pm
autor: Jan_J
Nieprzetestowana możliwość jaką znalazłem:
add days to date in query:
http://www.oooforum.org/forum/viewtopic.phtml?t=34873
prowadzi do
http://www.9ls.com/Wiki.jsp?page=HsqlLibrary
w którym znajduje się klasa Java z funkcją dla HSQL umożliwiającą pewien zakres operacji na datach.
Jednak mi się nie udało skorzystać z zawartości tego archiwum. Może będziecie mieć więcej szczęścia.
Re: Operacje na datach
: sob lis 27, 2010 1:26 am
autor: eRestin
Dziękuję
Jan_J
Znalazłem jeszcze inne rozwiązanie, które jest BARDZO pośrednie.
w Kwerendzie mam tabele "Data pobrania:" i "Data zwrotu" a w kolejnych polach wpisałem:
DATEDIFF( 'dd', "Data pobrania:", "Data zwrotu:") z aliasem "Ilość dni:" w ten sposób omijam dni wolne, patrząc na kalendarz zanim wypełnię "Data zwrotu:" a wynikiem "Ilość dni" jest różnica w dniach.
Kolejną tabelę stworzyłem:
DATEDIFF( 'dd', "Data pobrania:", NOW()) z aliasem "Jak długo:" (choć nazwa jest marna

) której wynikiem jest liczba dni liczona od wpisanej w "Data pobrania:"
Mam nadzieję, że na podstawie tych tabel uda mi się stworzyć raport przedstawiający wszystkich z liczbą dni powyżej 30.
EDIT
Oczywiście takie rozwiązanie ma swój jeden minus, nie ma opcji przestań liczyć dni po np. wpisaniu jakiejś literki np. X w kolejnym polu lub 0 w polu rozliczenie.
Raport spokojnie można zbudować na podstawie tych dni i np. czy klient oddał wypożyczoną rzecz.
Wystarczy w funkcjach kwerendy zaznaczyć że rozliczenie ma być równe 0 a dni większe równe 30. W ten sposób wyświetlone w raporcie zostaną osoby, których jakiekolwiek z tych kryteriów nie zostanie spełnione

Oczywiście do raportu należy dodać też imię i nazwisko delikwenta, którego też dodajemy do tej kwerendy
