Del via


ER-funktionen CHANGETIMEZONE

Funktionen CHANGETIMEZONE returnerer en værdi i form af Dato/klokkeslæt i UTC-tid (Greenwich Mean Time [GMT]), som konverteres fra en given dato-/klokkeslætsværdi i én tidszone til en dato-/klokkeslætsværdi i en anden tidszone.

Syntaks

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

Argumenter

datetime: DatoKlokkeslæt

En dato-/klokkeslætsværdi i tidszonen UTC-tid, der repræsenterer den dato-/klokkeslætsværdi, der skal konverteres.

base time zone: Streng

Navnet på den tidszone, som en bestemt dato-/klokkeslætsværdi skifter til før konvertering.

target time zone: Streng

Navnet på den tidszone, som en konverteret dato-/klokkeslætsværdi skifter til under konvertering.

Returnerede værdier

Dato/klokkeslæt

Den nye dato-/klokkeslætsværdi i tidszonen UTC-tid.

Bemærkninger til brug

Hvis du vil angive tidszoner for kilde og mål, kan du bruge tidszonenavne, der leveres af IANA (Internet Assigned Numbers Authority), eller som understøttes af Microsoft Windows.

Under kørsel opstår undtagelsen "Tidszonen '<time zone name>' findes ikke", hvis det angivne navn ikke findes på IANA-listen eller i Windows-registreringsdatabasen.

I forbindelse med tidszoner, hvor der er sommertid, tager konverteringen højde for sommertidens tidsforskel i UTC-tid. De seneste tilgængelige oplysninger om denne tidsforskel bruges under konvertering.

Eksempel 1

I dette eksempel bruges tidszonenavnene til Windows.

Du konfigurerer datakilden DSX af typen Beregnet felt. Den indeholder følgende udtryk.

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

Hvis du konfigurerer udtrykket for DSY-datakilden for den beregnede felttype som DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), returnerer DSX-datakilden teksten 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Denne tekst viser, at tidsforskellen mellem de to angivne tidszoner den 1. juni er mere end 24 timer. Den omregnede dato/tidsværdi er derfor en dag tidligere end den angivne dato/tidsværdi, da basistidszonen er foran måltidszonen.

Hvis du konfigurerer udtrykket for DSY-datakilden for den beregnede felttype som DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), returnerer DSX-datakilden teksten 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Denne tekst viser, at tidsforskellen mellem de to angivne tidszoner den 1. december er mindre end 24 timer. Den omregnede værdi for dato/tid svarer derfor til den givne dato-/tidsværdi.

Bemærk!

Det samme udtryk returnerer en anden afvigelse mellem de angivne og omregnede dato-/tidsværdierne for det samme par tidszoner, da en anden forskel i sommertid for UTC-tid overholdes for de angivne tidszoner på en bestemt dato/klokkeslæt.

Eksempel 2

I dette eksempel bruges IANA-tidszonenavnene.

Du konfigurerer datakilden DSX af typen Beregnet felt. Den indeholder følgende udtryk.

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

Hvis du konfigurerer udtrykket for DSY-datakilden for den beregnede felttype som DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), returnerer DSX-datakilden teksten 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Denne tekst viser, at tidsforskellen mellem de to angivne tidszoner den 1. juni er mere end 24 timer. Den omregnede dato/tidsværdi er derfor en dag tidligere end den angivne dato/tidsværdi, da basistidszonen er foran måltidszonen.

Hvis du konfigurerer udtrykket for DSY-datakilden for den beregnede felttype som DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), returnerer DSX-datakilden teksten 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Denne tekst viser, at tidsforskellen mellem de to angivne tidszoner den 1. december er mindre end 24 timer. Den omregnede værdi for dato/tid svarer derfor til den givne dato-/tidsværdi.

Eksempel 3

Du konfigurerer datakilden DSX af typen Beregnet felt. Den indeholder følgende udtryk.

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

Hvis du konfigurerer udtrykket for DSY-datakilden for den beregnede felttype som DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), returnerer DSX-datakilden teksten 2021-06-01T12:55:00.0000000+00:00 -> 2021-06-02T01:55:00.0000000+00:00'. Denne tekst viser, at tidsforskellen mellem de to angivne tidszoner den 1. juni er mere end 24 timer. Den omregnede dato/tidsværdi er derfor en dag senere end den angivne dato-/tidsværdi, da måltidszonen er foran basistidszonen.

Eksempel 4

Du kan få et dato-/tidsstempel fra en ekstern kilde som tekst, der ikke indeholder tidszoneoplysninger. Du kan dog kende den tidszone, som kilden opererer i. Du kan f.eks. modtage dato-/tidsstemplet 01/12/2021 12:55:00 fra en tjeneste, der drives fra Spanien. Gennemfør følgende konvertering for at gemme denne værdi af dato/klokkeslæt korrekt i databasen:

  • Konfigurer DSY-datakilden for Beregnet felt-typen for at konvertere et dato-/tidsstempel fra tekst til dato-/klokkeslætsværdien i UTC-tid.

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

  • Konfigurer DSX-datakilden for Beregnet felt-typen for at ændre den omregnede dato-/klokkeslætsværdi til UTC-tid som dato-/klokkeslætsværdi for tidszonen i den eksterne kilde.

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

Bemærk!

Når du bruger funktionen CHANGETIMEZONE til dato-/tidskonvertering, skal du være opmærksom på, at alle dato-/klokkeslætsværdierne er gemt i databasen som værdien i tidszonen for UTC-tid. Før denne værdi kan præsenteres på programsiderne, bliver den konverteret. Transformationen tager højde for den tidszone, der er angivet som foretrukken zone for den programbruger, der aktuelt er logget på.

Yderligere ressourcer

Dato- og klokkeslætsfunktioner