Strona 1 z 1

DATE_ADD INTERVAL open office

: pt sie 24, 2012 1:04 pm
autor: panbaryla
Próbuję wykombinować dodanie do daty serwisu interwału czasowe np 45 dni. Prostej kwerendy:

Kod: Zaznacz cały

SELECT "data_serwisu" FROM "Serwis2"

w ten sposób

Kod: Zaznacz cały

SELECT "data_serwisu",DATEADD(data_serwisu,INTERVAL 45 DAY) AS "data_planowanego"
FROM "Serwis2"
Nie jestem zbyt biegły w temacie wiec będę wdzięczny za wszelką pomoc...

Re: DATE_ADD INTERVAL open office

: pn sie 27, 2012 2:14 pm
autor: Jan_J
Wbudowana w OOo/LO baza HSQLDB ma niekompletną obsługę dat.

Remedia są w zasadzie dwa: albo zainstalować dodatek z operacjami na datach napisanymi w Javie, albo przenieść bazę na platformę sewerową (MySQL, PostgreSQL, Firebird) i łączyć się z nią przez Base'a.

Teoretycznie można by kombinować z EXTRACT i CAST, ale umiem wymusić jedynie numeryczną postać daty, zamiast sformatowanej jak np. yyyy-mm-dd.

Funkcja dateadd istnieje w HSQL 2.x, ale współczesne LO wciąż pracuje na wersji 1.8.

Re: DATE_ADD INTERVAL open office

: pn sie 27, 2012 3:46 pm
autor: panbaryla
Dzięki za podpowiedź. Przesiadam się na MySql (co nie jest takie proste). Już dawno powonieniem był to zrobić...

Re: DATE_ADD INTERVAL open office

: czw sie 30, 2012 4:46 pm
autor: panbaryla
@Jan_J - Czy wiesz jak bezboleśnie zrobić migrację z bazy w hsql na mysql?

Re: DATE_ADD INTERVAL open office

: czw sie 30, 2012 5:20 pm
autor: Jan_J
Po rozzipowaniu pliku odb strukturę bazy masz napisaną czystym SQL-em w pliku database/script.
MySQL używa nieco innego dialektu, trzeba będzie wziąć to pod uwagę.

Dane są w pliku database/data, i zazwyczaj są one binarne. Trzeba będzie pytać hsql-a o zawartość tabel i eksportować.

Re: DATE_ADD INTERVAL open office

: śr wrz 05, 2012 2:34 pm
autor: panbaryla

Kod: Zaznacz cały

SELECT CAST( DAY( "data_serwisu" ) || '-' || MONTH( "data_serwisu" ) || '-' || YEAR( "data_serwisu" ) + 5 AS "data_serwisu" ) AS "+5 days", DATEDIFF( 'dd', "data_serwisu", CAST( DAY( "data_serwisu" ) || '-' || MONTH( "data_serwisu" ) || '-' || YEAR( "data_serwisu" ) + 5 AS "DATE" ) ) AS "Days" FROM "Serwis2"
wywala mia taki błąd

Kod: Zaznacz cały

Stan SQL: 37000
Kod błędu: -16

Wrong data type: data_serwisu in statement [SELECT CAST( DAY( "data_serwisu" ) || '-' || MONTH( "data_serwisu" ) || '-' || YEAR( "data_serwisu" ) + 5 AS "data_serwisu" ) AS "+5 days", DATEDIFF( 'dd', "data_serwisu", CAST( DAY( "data_serwisu" ) || '-' || MONTH( "data_serwisu" ) || '-' || YEAR( "data_serwisu" ) + 5 AS "DATE" ) ) AS "Days" FROM "Serwis2"]
Już głupi jestem :knock: :knock: :knock:

Re: DATE_ADD INTERVAL open office

: wt wrz 11, 2012 11:31 am
autor: panbaryla
Jan_J pisze:Wbudowana w OOo/LO baza HSQLDB ma niekompletną obsługę dat.

Remedia są w zasadzie dwa: albo zainstalować dodatek z operacjami na datach napisanymi w Javie, albo przenieść bazę na platformę sewerową (MySQL, PostgreSQL, Firebird) i łączyć się z nią przez Base'a.

Teoretycznie można by kombinować z EXTRACT i CAST, ale umiem wymusić jedynie numeryczną postać daty, zamiast sformatowanej jak np. yyyy-mm-dd.

Funkcja dateadd istnieje w HSQL 2.x, ale współczesne LO wciąż pracuje na wersji 1.8.
Dograłem dodatek z operacjami na datach pobrany z http://ooo-forums.apache.org/en/forum/v ... 918#p26729 ale ni jak nie mogę wymusić działania dateadd...

Może ktoś podać wędkę?