DATE_ADD INTERVAL open office

Użytkowanie programu bazodanowego
panbaryla
Posty: 50
Rejestracja: pt sty 14, 2011 11:29 am

DATE_ADD INTERVAL open office

Post 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...
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: DATE_ADD INTERVAL open office

Post 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.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
panbaryla
Posty: 50
Rejestracja: pt sty 14, 2011 11:29 am

Re: DATE_ADD INTERVAL open office

Post autor: panbaryla »

Dzięki za podpowiedź. Przesiadam się na MySql (co nie jest takie proste). Już dawno powonieniem był to zrobić...
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
panbaryla
Posty: 50
Rejestracja: pt sty 14, 2011 11:29 am

Re: DATE_ADD INTERVAL open office

Post autor: panbaryla »

@Jan_J - Czy wiesz jak bezboleśnie zrobić migrację z bazy w hsql na mysql?
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: DATE_ADD INTERVAL open office

Post 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ć.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
panbaryla
Posty: 50
Rejestracja: pt sty 14, 2011 11:29 am

Re: DATE_ADD INTERVAL open office

Post 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:
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
panbaryla
Posty: 50
Rejestracja: pt sty 14, 2011 11:29 am

Re: DATE_ADD INTERVAL open office

Post 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ę?
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
ODPOWIEDZ