W Oracle Analytics administratorzy ustawiają domyślną strefę czasową, która jest używana na potrzeby obliczania wartości daty i godziny, w sekcji Ustawienia systemowe. To ustawienie globalne ma zastosowanie do wszystkich obliczeń. W tym temacie opisano, jak korzystać z funkcji TIMESTAMPADD
, aby określić inną strefę czasową w przypadku, gdy użytkownik chce użyć innego znacznika czasu w konkretnym obliczeniu.
Ustawianie domyślnej strefy czasowej dla obliczeń w ustawieniach systemu
CURRENT_DATE
CURRENT_TIME()
CURRENT_TIMESTAMP()
NOW()
Użytkownik będący administratorem może zmienić znacznik czasu używany w obliczeniach, korzystając z opcji Domyślna strefa czasowa dla obliczeń związanych z datą dostępnej w konsoli w sekcji Zaawansowane ustawienia systemowe. Należy wybrać odpowiednią strefę czasową z listy rozwijanej i zastosować zmiany, aby nowa wartość zaczęła obowiązywać.
Więcej informacji dotyczących globalnych ustawień strefy czasowej można znaleźć w temacie Ustawienia systemowe - opcje formatu.
Używanie określonej strefy czasowej dla znaczników czasu w obliczeniach
Aby wygenerować w obliczeniach znacznik czasu inny niż określono w ustawieniach systemu, należy użyć funkcji TIMESTAMPADD
w połączeniu z funkcją CURRENT_TIMESTAMP()
lub NOW()
. Podstawowe obliczenie z użyciem funkcji TIMESTAMPADD
jest następujące:
TIMESTAMPADD(SQL_TSI_<<interwał>>, <<wyrażenie całkowitoliczbowe>>, <<wyrażenie znacznika czasu>>)
Podczas obliczania znaczników czasu wartość HOUR
jest interwałem, a przesunięcie czasu jest wyrażoną w godzinach różnicą między strefą czasową UTC a strefą czasową, dla której ma zostać wykonane raportowanie. Na przykład:
TIMESTAMPADD(SQL_TSI_HOUR, -6,CURRENT_TIMESTAMP(5))
W wyniku tego obliczenia zwracany jest bieżący znacznik czasu ze strefy czasowej "USA - czas górski". Nową kolumnę znaczników czasu można utworzyć jako kolumnę pochodną w źródle tabeli logicznej albo zmapować ją bezpośrednio na bazę danych. Różnica polega na tym, gdzie jest wykonywane obliczanie - w Oracle Analytics czy w bazie danych. Na poniższym rysunku pokazano obliczenie zmapowane bezpośrednio na bazę danych w oknie dialogowym "Konstruktor wyrażeń - Wyrażenie".
Gdy jako domyślna strefa czasowa jest ustawiona strefa UTC, funkcja CURRENT_DATE
nie zwróci prawidłowej daty (względem strefy czasowej użytkownika) dla pewnych godzin w ciągu dnia. Na przykład gdy w strefie czasowej UTC wypada północ, data lokalna nie jest zgodna z datą UTC przez okres o długości równej przesunięciu czasu.
Rzutowanie obliczania znacznika czasu jako daty powoduje rozwiązanie tego problemu. Na przykład:
cast(TIMESTAMPADD(SQL_TSI_HOUR, -6,CURRENT_TIMESTAMP) as date)
Na poniższym rysunku pokazano obliczenie utworzone jako kolumna pochodna w oknie dialogowym "Konstruktor wyrażeń - Pochodna kolumna logiczna".
W przypadku raportów unikatowych czy też jednorazowych obliczenia znaczników czasu można tworzyć na poziomie raportu w wizualizacji danych lub klasycznej analizie. Jeśli planowane jest ponowne używanie obliczeń, często łatwiej jest zdefiniować je jako kolumny w modelu semantycznym (lub w pliku RPD).
Więcej informacji dotyczących funkcji wspomnianych w tym temacie można znaleźć w tematach Funkcje daty i godziny i Funkcje ciągów czasowych.