Udostępnij za pośrednictwem


CHANGETIMEZONE, funkcja ER

Funkcja CHANGETIMEZONE zwraca wartość Data/godzina w uniwersalnym czasie koordynowanym (czas uniwersalny Greenwich [GMT]), która jest konwertowana z danej wartości daty/godziny w jednej strefie czasowej na wartość daty/godziny w innej strefie czasowej.

Składnia

CHANGETIMEZONE (datetime, base time zone, target time zone)

Argumenty

datetime: Data/godzina

Wartość daty/czasu w strefie czasowej Uniwersalny czas koordynowany, która reprezentuje wartość daty/godziny do konwersji.

base time zone: Ciąg

Nazwa strefy czasowej, do której przenoszona jest podana wartość daty/godziny przed konwersją.

target time zone: Ciąg

Nazwa strefy czasowej, do której przenoszona jest konwertowana wartość daty/godziny w trakcie konwersji.

Wartości zwracane

Data/godzina

Wynikowa wartość daty/godziny w strefie czasowej Uniwersalny czas koordynowany.

Uwagi dotyczące użytkowania

Aby określić źródłową i docelową strefę czasową, można użyć nazw stref czasowych podawanych przez organizację Internet Assigned Numbers Authority (IANA) lub obsługiwanych przez system Microsoft Windows.

W czasie wykonywania wyjątek „Strefa czasowa '<time zone name>'” nie istnieje, jeśli nie znaleziono podanej nazwy na liście IANA lub w rejestrze systemu Windows.

W przypadku stref czasowych, w których jest stosowany czas letni, konwersja uwzględnia przesunięcie związane z czasem letnim w strefie uniwersalnego czasu koordynowanego. Podczas konwersji są używane najnowsze dostępne informacje o tym przesunięciu.

Przykład 1

W tym przykładzie są używane nazwy stref czasowych systemu Windows.

Konfigurujesz źródło danych DSX typu Pole obliczeniowe. Zawiera ono następujące wyrażenie.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "E. Europe Standard Time", "Hawaiian Standard Time"), "O")
)

W przypadku konfigurowania wyrażenia źródła danych DSY typu Pole obliczeniowe jako DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), źródło danych DSX zwraca tekst 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Ten tekst pokazuje, że różnica czasu między dwiema wybranymi strefami czasowymi 1 czerwca wynosi więcej niż 24 godziny. Dlatego przekonwertowana wartość daty/godziny jest o jeden dzień wcześniejsza niż podana wartość daty/godziny, ponieważ podstawowa strefa czasowa znajduje się po docelowej strefie czasowej.

W przypadku konfigurowania wyrażenia źródła danych DSY typu Pole obliczeniowe jako DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), źródło danych DSX zwraca tekst 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Ten tekst pokazuje, że różnica czasu między dwiema wybranymi strefami czasowymi 1 grudnia wynosi mniej niż 24 godziny. Dlatego przekonwertowana wartość daty/godziny jest równa podanej wartości daty/godziny.

Banknot

To samo wyrażenie zwraca różne odchylenie między podaną i przekonwertowaną wartością daty/godziny dla tej samej pary stref czasowych, ponieważ dla podanych stref czasowych w danej dacie/godzinie jest odnotowane różne przesunięcie uniwersalnego czasu koordynowanego przy zmianie czasu na letni.

Przykład 2

W tym przykładzie są używane nazwy stref czasowych organizacji IANA.

Konfigurujesz źródło danych DSX typu Pole obliczeniowe. Zawiera ono następujące wyrażenie.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "Europe/Athens", "US/Hawaii"), "O")
)

W przypadku konfigurowania wyrażenia źródła danych DSY typu Pole obliczeniowe jako DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), źródło danych DSX zwraca tekst 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Ten tekst pokazuje, że różnica czasu między dwiema wybranymi strefami czasowymi 1 czerwca wynosi więcej niż 24 godziny. Dlatego przekonwertowana wartość daty/godziny jest o jeden dzień wcześniejsza niż podana wartość daty/godziny, ponieważ podstawowa strefa czasowa znajduje się po docelowej strefie czasowej.

W przypadku konfigurowania wyrażenia źródła danych DSY typu Pole obliczeniowe jako DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), źródło danych DSX zwraca tekst 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Ten tekst pokazuje, że różnica czasu między dwiema wybranymi strefami czasowymi 1 grudnia wynosi mniej niż 24 godziny. Dlatego przekonwertowana wartość daty/godziny jest równa podanej wartości daty/godziny.

Przykład 3

Konfigurujesz źródło danych DSX typu Pole obliczeniowe. Zawiera ono następujące wyrażenie.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "US/Hawaii", "Europe/Athens"), "O")
)

W przypadku konfigurowania wyrażenia źródła danych DSY typu Pole obliczeniowe jako DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), źródło danych DSX zwraca tekst 2021-06-01T12:55:00.0000000+00:00 -> 2021-06-02T01:55:00.0000000+00:00'. Ten tekst pokazuje, że różnica czasu między dwiema wybranymi strefami czasowymi 1 czerwca wynosi więcej niż 24 godziny. Dlatego przekonwertowana wartość daty/godziny jest o jeden dzień późniejsza niż docelowa wartość daty/czasu, ponieważ docelowa strefa czasowa znajduje się po podstawowej strefie czasowej.

Przykład 4

Użytkownik może otrzymać datę/sygnaturę czasową z zewnętrznego źródła jako tekst, który nie zawiera informacji o strefie czasowej. Można jednak znać strefę czasową, w których działa źródło. Można na przykład otrzymać datę/sygnaturę czasową 01/12/2021 12:55:00 z usługi obsługiwanej w Hiszpanii. Aby poprawnie zapisać tę wartość daty/godziny w bazie danych, należy wykonać następującą konwersję:

  • Skonfiguruj źródło danych DSY typu Pole obliczeniowe, aby przekonwertować datę/sygnaturę czasową z tekstu na wartość daty/godziny w uniwersalnym czasie koordynowanym.

    DATETIMEVALUE ("01/12/2021 12:55:00", "dd/MM/yyyy HH:mm:ss", "ES")

  • Skonfiguruj źródło danych DSX typu Pole obliczeniowe, aby zmienić przekonwertowaną wartość daty/godziny na uniwersalny czas koordynowany jako wartość daty/godziny dla strefy czasowej źródła zewnętrznego.

    CHANGETIMEZONE(DSY, "Romance Standard Time", "GMT Standard Time")

Banknot

Używając funkcji CHANGETIMEZONE do konwersji daty/czasu, należy pamiętać, że dowolna wartość daty/godziny jest przechowywana w bazie danych jako wartość w strefie czasowej Uniwersalny czas koordynowany. Zanim ta wartość będzie prezentowana na stronach aplikacji, zostanie przekształcona. Przekształcenie uwzględnia strefę czasową ustawioną jako strefę preferowaną dla aktualnie zalogowanego użytkownika aplikacji.

Dodatkowe zasoby

Funkcje daty i godziny