[Risolto] Operazioni con date in SQL su Open Office Base
Inviato: giovedì 6 giugno 2013, 17:09
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:
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:
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?
Spero di aver messo abbastanza dettagli per spiegare adeguatamente il problema...
Grazie in anticipo a chi proverà ad aiutarmi!
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( ) )
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 )
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?
Spero di aver messo abbastanza dettagli per spiegare adeguatamente il problema...
Grazie in anticipo a chi proverà ad aiutarmi!