TIMESERIAL su query

Discussioni sulle caratteristiche di database
Rispondi
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

TIMESERIAL su query

Messaggio da Muset »

Buongiorno a tutti, dopo aver sommato 2 DATEDIFF in una query ed in un'altra sommato il risultato della prima di ogni record, ho bisogno di riportare questo totale in stringa "ora" , quindi volevo sapere se TIMESERIAL fa al caso e se è una funzione solo per sql/macro o se si può applicare in un campo query come DATEDIFF, se si qual'è la sintassi corretta? Grazie e buona giornata a tutti
LibreOffice 7.3.4.2 (x64) Windows 11
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: TIMESERIAL su query

Messaggio da charlie »

Ciao, non mi sembra che TIMESERIAL faccia parte delle funzioni HSQLDB 1.8 con cui lavora Base.
Qui, puoi trovare tutti i riferimenti necessari: viewtopic.php?f=29&t=6474
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: TIMESERIAL su query

Messaggio da Muset »

Ciao, avevi ragione, è una funzione che non ne fa parte e nemmeno TIMEVALUE che sarebbe stata quella che serviva a me. Ho provato più soluzioni " CAST" e "CONV" , ma o mi dice che non lo riconosce come campo o che i dati non appartengono a Java o che l'argomento non è riconosciuto. Ho cercato nel forum una soluzione senza esito (forse non uso la chiave giusta), mi sono inoltrato anche nella tua guida, ma al momento sono ancora al palo... sono fiducioso, riuscirò a trasformare i numeri in ore :D Grazie, come sempre un grande!!
LibreOffice 7.3.4.2 (x64) Windows 11
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: TIMESERIAL su query

Messaggio da charlie »

Ciao, questa lunga stringa che avevi messo in una query: viewtopic.php?f=13&t=11148&p=63351#p63360 e ripulita da un SELECT ... FROM ... di troppo, sembra lavorare bene:

Codice: Seleziona tutto

SELECT   TO_CHAR( CAST( '00:' || DATEDIFF( 'mi', "Ingresso", "Uscita" ) + DATEDIFF( 'mi', "Ingresso2", "Uscita2" ) || ':00' AS "TIME" ), 'HH:MI' ) AS "Ore lavorate" FROM { oj "TPresenze" LEFT OUTER JOIN "TDipendenti" ON "TPresenze"."ID Dipendente" = "TDipendenti"."IDDipendenti" }
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: TIMESERIAL su query

Messaggio da charlie »

Ma attenzione a quando si superano i 720 minuti (12 ore), il risultato sarà un orario p.m. in inglese!
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: TIMESERIAL su query

Messaggio da Muset »

Ciao, mi sono spiegato male e ti ho girato la versione vecchia del db. Nel form presenze funziona tutto, quello che volevo fare era come in FFerie, ovvero una subform che mi dia il monte permessi goduti, avendo ottenuto questo con query(Rtotpermessi), ho il risultato in numero quindi lo devo solo convertire in time. Ho provato anche ad applicare il TO_CHAR , ma non funziona...
Allegati
Nuovo database - Copia.odb
(156.47 KiB) Scaricato 133 volte
LibreOffice 7.3.4.2 (x64) Windows 11
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: TIMESERIAL su query

Messaggio da charlie »

Ciao, le conversioni di tipo riservano sempre delle sorprese.
Nel tuo caso abbiamo una somma (funzione di aggregazione) il cui risultato può essere adoperato ulteriormente tramite una Vista.
Ma in che formato sarà il dato? Ho visto che se non lo si converte prima in intero, non funziona:

Codice: Seleziona tutto

SELECT TO_CHAR( CAST( ( CAST( "totnum" AS Integer ) ) || ':00' || ':00' AS "TIME" ), 'HH:MI' ) 
Così sembra andare, ma se si superano 12 ore o multipli il conteggio si sballa :( .
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: TIMESERIAL su query

Messaggio da Muset »

Buongiorno a tutti,
Grazie per la soluzione suggerita, ma in effetti è come dici tu charlie, il limite è di 12 ore, va a colmare il mancante alle 12 e mi restituisce solo il restante. Ho provato anche a cambiare il formato con quello per oltre le 24 ore, ma senza esito. Farò altre prove
LibreOffice 7.3.4.2 (x64) Windows 11
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: TIMESERIAL su query

Messaggio da charlie »

Ciao, perché non lasci il dato come valore decimale? Cosa ti serve in formato orario?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: TIMESERIAL su query

Messaggio da Muset »

Buongiorno,
perchè nel subform di FPermessi voglio vedere il totale delle ore di permesso godute
LibreOffice 7.3.4.2 (x64) Windows 11
Muset
Messaggi: 124
Iscritto il: lunedì 29 marzo 2021, 14:35
Località: Fagagna UD

Re: TIMESERIAL su query

Messaggio da Muset »

Buonasera,
la momento sono solo riuscito a portare il limite delle ore da 12 a 24 modificando la Sql da charlie suggerita aggiungendo 24 nella definizione del formato ora :

TO_CHAR( CAST( ( CAST( [campo ore in decimali] AS INTEGER ) ) || ':00' || ':00' AS [TIME] ), 'HH24:MI' )

ovvero converte il campo calcolato delle ore in decimali a formato ore:minuti (by charlie) con il limite delle 12 ore ( raggiunte le 12 ore riparte da 00:00) aggiungendo 24 in HH:MI , il limite si sposta a 24 ore, fino alle 23:59 poi riparte da 00:00
LibreOffice 7.3.4.2 (x64) Windows 11
Rispondi