Funzioni di data e ora

Le funzioni di data e ora consentono di gestire i dati in base ai tipi DATE e DATETIME.

Funzione Esempio Descrizione Sintassi

CURRENT_Date

CURRENT_DATE

Restituisce la data corrente.

La data è determinata dal sistema su cui è in esecuzione Oracle BI.

CURRENT_DATE

CURRENT_TIME

CURRENT_TIME(3)

Restituisce l'ora corrente con il numero specificato di cifre di precisione, ad esempio: HH:MM:SS.SSS

Se non è stato specificato alcun argomento, la funzione restituisce la precisione predefinita.

CURRENT_TIME(expr)

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP(3)

Restituisce la data/indicatore orario corrente con il numero specificato di cifre di precisione.

CURRENT_TIMESTAMP(expr)

DAYNAME

DAYNAME(Order_Date)

Restituisce il nome del giorno della settimana per un'espressione di data specificata.

DAYNAME(expr)

DAYOFMONTH

DAYOFMONTH(Order_Date)

Restituisce il numero corrispondente al giorno del mese per un'espressione di data specificata.

DAYOFMONTH(expr)

DAYOFWEEK

DAYOFWEEK(Order_Date)

Restituisce un numero compreso tra 1 e 7 corrispondente al giorno della settimana per un'espressione di data specificata. Ad esempio, 1 corrisponde sempre a Domenica, 2 corrisponde a Lunedì e così via fino a Sabato che restituisce 7.

DAYOFWEEK(expr)

DAYOFYEAR

DAYOFYEAR(Order_Date)

Restituisce un numero compreso tra 1 e 366 corrispondente al giorno dell'anno per un'espressione di data specificata.

DAYOFYEAR(expr)

DAY_OF_QUARTER

DAY_OF_QUARTER(Order_Date)

Restituisce un numero compreso tra 1 e 92 corrispondente al giorno del trimestre per l'espressione di data specificata.

DAY_OF_QUARTER(expr)

HOUR

HOUR(Order_Time)

Restituisce un numero compreso tra 0 e 23 corrispondente all'ora per un'espressione di tempo specificata. Ad esempio, 0 corrisponde alle 12.00 e 23 corrisponde alle 23.00.

HOUR(expr)

MINUTE

MINUTE(Order_Time)

Restituisce un numero compreso tra 0 e 59 corrispondente al minuto per un'espressione di tempo specificata.

MINUTE(expr)

MONTH

MONTH(Order_Time)

Restituisce un numero compreso tra 1 e 12 corrispondente al mese per un'espressione di data specificata.

MONTH(expr)

MONTHNAME

MONTHNAME(Order_Time)

Restituisce il nome del mese per un'espressione di data specificata.

MONTHNAME(expr)

MONTH_OF_QUARTER

MONTH_OF_QUARTER(Order_Date)

Restituisce un numero compreso tra 1 e 3 corrispondente al mese del trimestre per un'espressione di data specificata.

MONTH_OF_QUARTER(expr)

NOW

NOW()

Restituisce l'indicatore orario corrente. La funzione NOW è equivalente alla funzione CURRENT_TIMESTAMP.

NOW()

QUARTER_OF_YEAR

QUARTER_OF_YEAR(Order_Date)

Restituisce un numero compreso tra 1 e 4 corrispondente al trimestre dell'anno per un'espressione di data specificata.

QUARTER_OF_YEAR(expr)

SECOND

SECOND(Order_Time)

Restituisce un numero compreso tra 0 e 59 corrispondente ai secondi per un'espressione di tempo specificata.

SECOND(expr)

TIMESTAMPADD

TIMESTAMPADD(SQL_TSI_MONTH, 12,Time."Order Date")

Aggiunge un numero specificato di intervalli a un indicatore orario e restituisce un singolo indicatore orario.

Sono disponibili le opzioni di intervallo seguenti: SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_YEAR

TIMESTAMPADD(interval, expr, timestamp)

TIMESTAMPDIFF

TIMESTAMPDIFF(SQL_TSI_MONTH, Time."Order Date",CURRENT_DATE)

Restituisce il numero totale di intervalli specificati tra due indicatori orari.

Utilizzare gli stessi intervalli di TIMESTAMPADD.

TIMESTAMPDIFF(interval, expr, timestamp2)

WEEK_OF_QUARTER

WEEK_OF_QUARTER(Order_Date)

Restituisce un numero compreso tra 1 e 13 corrispondente alla settimana del trimestre per l'espressione di data specificata.

WEEK_OF_QUARTER(expr)

WEEK_OF_YEAR

WEEK_OF_YEAR(Order_Date)

Restituisce un numero compreso tra 1 e 53 corrispondente alla settimana dell'anno per l'espressione di data specificata.

WEEK_OF_YEAR(expr)

YEAR

YEAR(Order_Date)

Restituisce l'anno per l'espressione di data specificata.

YEAR(expr)

Suggerimenti sull'uso delle funzioni di data

Di seguito sono riportati alcuni suggerimenti su come ottenere i migliori risultati quando si utilizzano le funzioni di data nelle cartelle di lavoro per calcolare i periodi fiscali, convertire stringhe in date, visualizzare data e ora in un fuso orario specifico e calcolare le differenze nel tempo.

Calcolare anno, trimestre e mese fiscale:

In genere le aree argomenti prevedono una dimensione temporale, pertanto è possibile utilizzare i periodi preconfigurati come trimestri, mesi e settimane fiscali. Se si dispone di un solo campo per la data, è possibile calcolare personalmente questi periodi utilizzando le funzioni di data.

In questo esempio viene calcolato il trimestre fiscale:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||'Q'||cast(QUARTER(TIMESTAMPADD(SQL_TSI_MONTH, 7,<same date field>)) as char)

In questo esempio vengono calcolati l'anno e il mese fiscali:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||cast(MONTHNAME(<same date field>) as char)

Note:

  • || valori concatenati.
  • cast (xxx(date) as char) estrae una porzione del campo della data.
  • TIMESTAMPADD aggiunge (o sottrae) periodi a una data. In questo esempio viene utilizzato il valore del parametro SQL_TSI_MONTH per aggiungere mesi.

I calcoli sopra riportati funzionano bene nelle tabelle ma, quando vengono utilizzati nei filtri, lo spazio tra i valori restituiti può sembrare strano. In questo caso, utilizzare un calcolo più pulito ma più complesso basato su questi esempi:

'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-Q'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<same date field>,7)),'Q')
'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-'||evaluate ('to_char(%1,%2)'as char,<same date field>,'MON')

Convertire una stringa in data:

Oracle Analytics esegue il profiling dei dati e fornisce suggerimenti di arricchimento per estrarre e convertire le date. Se si desidera convertire personalmente una stringa in data, utilizzare questi suggerimenti.
  • Nello strumento di progettazione delle cartelle di lavoro spostarsi nel riquadro Dati fino alla colonna che si desidera convertire, quindi fare clic con il pulsante destro del mouse e selezionare Converti in data. Configurare la data, quindi fare clic su Aggiungi passaggio.

  • Nello strumento di progettazione delle cartelle di lavoro spostarsi nel riquadro Dati fino alla colonna che si desidera convertire, quindi fare clic con il pulsante destro del mouse e selezionare Modifica. Configurare la data, quindi fare clic su Aggiungi passaggio.

    Nella casella di testo contenente il nome della colonna in blu immettere To_DateTime( prima del nome della colonna, quindi aggiungere il formato di dati da utilizzare dopo il nome della colonna, seguito da ), quindi fare clic su Aggiungi passaggio.
    Segue la descrizione di GUID-ADBD035B-A62A-4DED-8768-553365BAABFE-default.png
    .png

    Quando si utilizza l'opzione Modifica per creare la funzione date-conversion, è anche possibile utilizzare Allow_Variable_Digits per elaborare i valori di colonna con numeri a una o due cifre e gli argomenti Null_On_Error per eliminare le righe che non corrispondono al pattern richiesto. Vedere anche REPLACE e CAST per scoprire modi alternativi per elaborare i dati che non corrispondono al pattern richiesto.

    In alternativa a To_DateTime(), utilizzare CAST() per modificare il tipo di dati di un valore. Ad esempio, CAST(SalesDate AS DATE).

    Inoltre, utilizzare l'opzione Sostituisci. Nello strumento di progettazione delle cartelle di lavoro spostarsi nel riquadro Dati fino alla colonna che si desidera convertire, quindi fare clic con il pulsante destro del mouse e selezionare Sostituisci. Configurare il tipo di sostituzione desiderato, quindi fare clic su Aggiungi passaggio.

Visualizzare un campo di data e ora in un fuso orario specifico:

Utilizzare la funzione NEW_TIME nel database insieme a EVALUATE. Ad esempio:

evaluate ('new_time(%1,%2,%3)' as char, "DV - Pipeline and Forecast"."Opportunity"."Last Updated Date",'GMT','AST')

Accertarsi che il campo della data includa il componente dell'ora.

Calcolare la differenza nel tempo:

Per visualizzare la differenza in numero e percentuale tra oggi e ieri, creare calcoli in base ai seguenti esempi:
  • Calcolare una misura fino a ieri: filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Calcolare la differenza: Measure - filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Calcolare la differenza in percentuale: 1-(filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))/Measure display as percentage

Note:

  • In questo esempio si utilizza SQL_TSI_DAY, tuttavia è possibile utilizzare in alternativa WEEK e MONTH settimana dopo settimana e mese dopo mese.
  • Questi esempi si applicano a un calendario normale o naturale. Se si necessita di mesi e trimestri fiscali, utilizzare le variabili di repository nei calcoli in luogo di TIMESTAMPADD. In alternativa combinare queste indicazioni con il suggerimento Calcolare anno, trimestre e mese fiscale.
  • Alcune aree argomento includono misure pre-calcolate per i periodi precedenti, come PY (anno precedente) e PQ (trimestre precedente), che è possibile utilizzare per calcolare le differenze nel tempo.
  • In alternativa è possibile utilizzare le funzioni TIME SERIES: AGO, PERIODROLLING e TODATE. Vedere Funzioni di serie temporali.