In una moltitudine di query di un DB ho inserito la condizione
BETWEEN '2017-05-01' AND '2017-05-31'
Ogni anno perdo un mare di tempo a correggere l'anno.
Mi piacerebbe che la query andasse a leggere l'anno in un determinato posto (una variabile? un campo di una apposita tabella?) in modo che semplicemente cambiando quel valore, automaticamente le query operassero il filtro in base all'anno impostato.
Come dovrei fare?
grazie
[Risolto] Inserire dinamicamente anno in una query
[Risolto] Inserire dinamicamente anno in una query
Ultima modifica di charlie il lunedì 15 gennaio 2018, 11:49, modificato 1 volta in totale.
Motivazione: Aggiunti [Risolto] e spunta verde
Motivazione: Aggiunti [Risolto] e spunta verde
OpenOffice 4.1 su Windows 7
Re: Inserire dinamicamente anno in una query
Ciao e benvenuto sul forum.
Se intanto ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Per una panoramica delle regole del forum consulta il Manuale di sopravvivenza: http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.
Se intanto ti vuoi presentare puoi farlo qui: viewforum.php?f=16
Per una panoramica delle regole del forum consulta il Manuale di sopravvivenza: http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Inserire dinamicamente anno in una query
Ciao, le funzioni "data" e "time" a disposizione in HSQLDB 1.8 (il motore di Base) sono queste:
Codice: Seleziona tutto
DATEDIFF(string, datetime1, datetime2)[2]
returns the count of units of time elapsed from datetime1 to datetime2. The string indicates the unit of time and can have the following values 'ms'='millisecond', 'ss'='second','mi'='minute','hh'='hour', 'dd'='day', 'mm'='month', 'yy' = 'year'. Both the long and short form of the strings can be used.
DAYNAME(date)
returns the name of the day
DAYOFMONTH(date)
returns the day of the month (1-31)
DAYOFWEEK(date)
returns the day of the week (1 means Sunday)
DAYOFYEAR(date)
returns the day of the year (1-366)
HOUR(time)
return the hour (0-23)
MINUTE(time)
returns the minute (0-59)
MONTH(date)
returns the month (1-12)
MONTHNAME(date)
returns the name of the month
NOW()
returns the current date and time as a timestamp) - use CURRENT_TIMESTAMP instead
QUARTER(date)
returns the quarter (1-4)
SECOND(time)
returns the second (0-59)
WEEK(date)
returns the week of this year (1-53)
YEAR(date)
returns the year
CURRENT_DATE[2]
returns the current date
CURRENT_TIME[2]
returns the current time
CURRENT_TIMESTAMP[2]
returns the current timestamp
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Inserire dinamicamente anno in una query
Credo di non essermi spiegato bene.
Ho un DB con una moltitudine di query in cui sono presenti intervalli di date che si riferiscono ad un preciso anno.
Esempio: BETWEEN '2017-05-01' AND '2017-05-31'
Ogni anno nuovo le devo modificare per cambiare l'anno.
Se la query potesse "leggere" il valore dell'anno da qualche parte, mi sarebbe sufficiente modificare l'anno lì per aggiornare automaticamente tutte le query che ne fanno uso.
La query diverrebbe una roba del tipo
BETWEEN $ANNO || '-05-01' AND $ANNO ||'-05-31'
Ho pensato, ad esempio, di creare una tabella ANNO, con un solo campo (anno) e, in qualche modo -che ancora non ho trovato- usare il valore che inserirei lì (la tabella sarebbe composta sempre da un solo record).
MI potete aiutare?
Ho un DB con una moltitudine di query in cui sono presenti intervalli di date che si riferiscono ad un preciso anno.
Esempio: BETWEEN '2017-05-01' AND '2017-05-31'
Ogni anno nuovo le devo modificare per cambiare l'anno.
Se la query potesse "leggere" il valore dell'anno da qualche parte, mi sarebbe sufficiente modificare l'anno lì per aggiornare automaticamente tutte le query che ne fanno uso.
La query diverrebbe una roba del tipo
BETWEEN $ANNO || '-05-01' AND $ANNO ||'-05-31'
Ho pensato, ad esempio, di creare una tabella ANNO, con un solo campo (anno) e, in qualche modo -che ancora non ho trovato- usare il valore che inserirei lì (la tabella sarebbe composta sempre da un solo record).
MI potete aiutare?
OpenOffice 4.1 su Windows 7
Re: Inserire dinamicamente anno in una query
Per spiegarti, ti eri spiegato.
L'elenco delle funzioni era solo un suggerimento per vedere quale potevi utilizzare.
Ad esempio la combinazione ti restituisce l'anno corrente, mentre l'anno precedente.
Bisogna fare delle prove per vedere se sono utilizzabili nell'espressione BETWEEN .... ma occorre un file di esempio che, se non è il tuo database, sia almeno una parte con una query reale.
L'elenco delle funzioni era solo un suggerimento per vedere quale potevi utilizzare.
Ad esempio la combinazione
Codice: Seleziona tutto
YEAR(NOW()
Codice: Seleziona tutto
YEAR(NOW()-1
Bisogna fare delle prove per vedere se sono utilizzabili nell'espressione BETWEEN .... ma occorre un file di esempio che, se non è il tuo database, sia almeno una parte con una query reale.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Inserire dinamicamente anno in una query
Ho risolto in questo modo (non so quanto elegante):
Ho creato una nuova tabella ANNO, con un solo record in cui c'è solo il campo ANNO che modifico ogni anno.
Nella query:
SELECT..., "ANNO" WHERE ... AND YEAR( "TABELLA"."DATA" ) = "ANNO"."ANNO" AND MONTH( "TABELLA"."DATA" ) = '01' ORDER BY ...
Grazie dei suggerimenti
Ho creato una nuova tabella ANNO, con un solo record in cui c'è solo il campo ANNO che modifico ogni anno.
Nella query:
SELECT..., "ANNO" WHERE ... AND YEAR( "TABELLA"."DATA" ) = "ANNO"."ANNO" AND MONTH( "TABELLA"."DATA" ) = '01' ORDER BY ...
Grazie dei suggerimenti
OpenOffice 4.1 su Windows 7