[Risolto] Operazioni con date in SQL su Open Office Base

Discussioni sui problemi di installazione e configurazione
Rispondi
Kiwi
Messaggi: 8
Iscritto il: giovedì 6 giugno 2013, 16:27

[Risolto] Operazioni con date in SQL su Open Office Base

Messaggio da Kiwi »

Ciao a tutti,
Non ho tanta esperienza e non riesco ad effettuare operazioni con le date all'interno di query SQL su Open Office Base.

L'operazione in sè non è difficile: devo selezionare all'interno di una tabella una serie di record registrati in passato che rispondono a determinate caratteristiche, una di queste è che la loro data sia oltre 14 mesi prima della data odierna (es. oggi che scrivo, tutti i record prima del 7 Aprile 2012; tra un mese mi verranno estratti invece quei record la cui data è anteriore al 7 Maggio 2012, e così via).

Premesse:
- Il campo "data record" è previsto in tabella e viene compilato obbligatoriamente ad ogni inserimento record, siamo quindi certi di averlo. E' un campo "data"
-

Primo tentativo:

Codice: Seleziona tutto

SELECT DISTINCT "tb"."Seriale", "tb"."Genere Record", "tb"."Nr Casa", "tb"."Nome Gruppo" 
FROM "tb" AS "tb" 
     WHERE "tb"."Tipo Record" != 'Revoca' 
          AND "tb"."Data Record" >= ALL ( SELECT DISTINCT "tb1"."Data Record" FROM "tb" AS "tb1" WHERE "tb"."Seriale" = "tb1"."Seriale" ) 
          AND ( "tb"."Data Record" + 225 <= CURDATE( ) )
Mi viene dato un messaggio di errore
Stato SQL: 37000
Codice di errore: -16
Tipo di dato errato: java.lang.NumberFormatException in statement [...

Da cui capisco che sicuramente c'è qualche formato che non si parla correttamente...

Secondo tentativo:

Codice: Seleziona tutto

SELECT DISTINCT "tb"."Seriale", "tb"."Genere Record", "tb"."Nr Casa", "tb"."Nome Gruppo" 
FROM "tb" AS "tb" 
     WHERE "tb"."Tipo Record" != 'Revoca' 
          AND "tb"."Data Record" >= ALL ( SELECT DISTINCT "tb1"."Data Record" FROM "tb" AS "tb1" WHERE "tb"."Seriale" = "tb1"."Seriale" )
          AND ( DATEDIFF( 'dd', '"tb"."Data Record"', 'CURDATE()' ) >= 225 ) 
La query funziona prima dell'inserimento dell'ultima riga (quella dove faccio il controllo della data), ma se aggiungo quest'ultima mi viene dato il seguente errore:
Stato SQL: 22001
Codice di errore: -124
Valore troppo lungo in statement [SELECT DISTINCT ...

A me pare molto strano, in quanto senza l'ultima riga non mi viene mai detto che c'è un valore troppo lungo... come può venir fuori solamente aggiungendo una WHERE clause dove si fa semplicemente un confronto? :crazy:

Spero di aver messo abbastanza dettagli per spiegare adeguatamente il problema...
Grazie in anticipo a chi proverà ad aiutarmi! ;)
Ultima modifica di Kiwi il lunedì 1 luglio 2013, 19:43, modificato 2 volte in totale.
Open Office 3.1
Windows XP
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Operazioni con date in SQL su Open Office Base

Messaggio da Gaetanopr »

Presumendo una tabella chiamata "Tabella1" con i seguenti campi "ID", "Importo", "Data" l'istruzione diventa in questo modo:

Codice: Seleziona tutto

SELECT "ID", "Importo", "Data", DATEDIFF( 'month', "Data", Now ) AS "Mesi" FROM "Tabella1"  Where "Mesi" > 14
oppure in giorni esempio 365+60=425 ci saranno piccole differenze considerando che i mesi non sono tutti di 30

Codice: Seleziona tutto

SELECT "ID", "Importo", "Data", DATEDIFF( 'day', "Data", Now ) AS "Giorni" FROM "Tabella1"  Where "Giorni" >= 425
Allego esempio db per maggiore comprensione
Allegati
query data Da _ a.odb
(4.42 KiB) Scaricato 297 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Kiwi
Messaggi: 8
Iscritto il: giovedì 6 giugno 2013, 16:27

Re: Operazioni con date in SQL su Open Office Base

Messaggio da Kiwi »

Grazie mille Gaetano,
Nel pomeriggio/serata faccio le dovute prove e poi provvedo ad aggiornare. 8-)
Open Office 3.1
Windows XP
Kiwi
Messaggi: 8
Iscritto il: giovedì 6 giugno 2013, 16:27

Re: Operazioni con date in SQL su Open Office Base

Messaggio da Kiwi »

Kiwi ha scritto:Grazie mille Gaetano,
Nel pomeriggio/serata faccio le dovute prove e poi provvedo ad aggiornare. 8-)
Chiedo scusa per il ritardo... non ho fatto in tempo a risolvere che mi si è fuso il monitor del pc!
Comunque... risolto (cambiando la sintassi ed attivando il pulsante "SQL")! Grazie mille Gaetano! :super:
Open Office 3.1
Windows XP
Rispondi