ER-funktio CHANGETIMEZONE
CHANGETIMEZONE
-funktio palauttaa DateTime-arvon koordinoidussa yleisajassa (Greenwichin ajassa [GMT]), joka muunnetaan tietystä päivämäärä/aika-arvosta yhdellä aikavyöhykkeellä päivämäärä/aika-arvoksi toisella aikavyöhykkeellä.
Syntaksi
CHANGETIMEZONE (datetime, base time zone, target time zone)
Argumentit
datetime
: DateTime
Päivämäärä/aika-arvo koordinoidun yleisajan aikavyöhykkeellä, joka edustaa muunnettavaa päivämäärä/aika-arvoa.
base time zone
: Merkkijono
Sen aikavyöhykkeen nimi, johon kulloinenkin päivämäärä/aika-arvo siirretään ennen muuntamista.
target time zone
: Merkkijono
Sen aikavyöhykkeen nimi, johon muunnettu päivämäärä/aika-arvo siirretään muuntamisen aikana.
Palautusarvot
Päivämäärä ja aika
Tuloksena oleva päivämäärä/aika-arvo koordinoidun yleisajan aikavyöhykkeellä.
Käyttöhuomautukset
Lähde- ja kohdeaikavyöhykkeiden määritykseen voi käyttää Internet Assigned Numbers Authorityn (IANA)tarjoamia tai Microsoft Windowsin tukemia aikavyöhykkeiden nimiä.
Suorituksen aikana ilmenee poikkeus Aikavyöhykettä <time zone name> ei ole olemassa, jos annettu nimi ei ole IANA:n luettelossa tai Windowsin rekisterissä.
Niiden aikavyöhykkeiden osalta, joissa käytetään kesäaikaa, muuntamisessa otetaan huomioon koordinoidun yleisajan kesäaikapoikkeama. Muuntamisessa käytetään viimeisimpiä tätä poikkeamaa koskevia tietoja.
Esimerkki 1
Tässä esimerkissä käytetään Windowsin aikavyöhykenimiä.
Määrität Laskettu kenttä -tyypin DSX-tietolähteen. Se sisältää seuraavan lausekkeen:
CONCATENATE(
DATETIMEFORMAT( DSY, "O"),
" -> ",
DATETIMEFORMAT( CHANGETIMEZONE(DSY, "E. Europe Standard Time", "Hawaiian Standard Time"), "O")
)
Jos määrität Laskettu kenttä -tyypin DSY-tietolähteen arvoksi DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN")
, DSX-tietolähde palauttaa tekstin 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Tämä teksti ilmaisee, että kahden annetun aikavyöhykkeen välinen aikaero 1. kesäkuuta on yli 24 tuntia. Näin ollen muunnettu päivämäärä/aika-arvo on yhden päivän aikaisempi kuin annettu päivämäärä/aika-arvo, koska perusaikavyöhyke on kohdeaikavyöhykettä edellä.
Jos määrität Laskettu kenttä -tyypin DSY-tietolähteen arvoksi DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN")
, DSX-tietolähde palauttaa tekstin 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Tämä teksti ilmaisee, että kahden annetun aikavyöhykkeen välinen aikaero 1. joulukuuta on alle 24 tuntia. Näin ollen muunnettu päivämäärä/aika-arvo vastaa annettua päivämäärä/aika-arvoa.
Muistiinpano
Sama lauseke palauttaa eri varianssin annetun ja muunnetun päivämäärä/aika-arvon välillä saman aikavyöhykeparin osalta, koska kyseisillä aikavyöhykkeillä noudetaan eri koordinoidun yleisajan kesäaikapoikkeamaa tiettynä päivänä/aikana.
Esimerkki 2
Tässä esimerkissä käytetään IANA:n aikavyöhykenimiä.
Määrität Laskettu kenttä -tyypin DSX-tietolähteen. Se sisältää seuraavan lausekkeen:
CONCATENATE(
DATETIMEFORMAT( DSY, "O"),
" -> ",
DATETIMEFORMAT( CHANGETIMEZONE(DSY, "Europe/Athens", "US/Hawaii"), "O")
)
Jos määrität Laskettu kenttä -tyypin DSY-tietolähteen arvoksi DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN")
, DSX-tietolähde palauttaa tekstin 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Tämä teksti ilmaisee, että kahden annetun aikavyöhykkeen välinen aikaero 1. kesäkuuta on yli 24 tuntia. Näin ollen muunnettu päivämäärä/aika-arvo on yhden päivän aikaisempi kuin annettu päivämäärä/aika-arvo, koska perusaikavyöhyke on kohdeaikavyöhykettä edellä.
Jos määrität Laskettu kenttä -tyypin DSY-tietolähteen arvoksi DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN")
, DSX-tietolähde palauttaa tekstin 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Tämä teksti ilmaisee, että kahden annetun aikavyöhykkeen välinen aikaero 1. joulukuuta on alle 24 tuntia. Näin ollen muunnettu päivämäärä/aika-arvo vastaa annettua päivämäärä/aika-arvoa.
Esimerkki 3
Määrität Laskettu kenttä -tyypin DSX-tietolähteen. Se sisältää seuraavan lausekkeen:
CONCATENATE(
DATETIMEFORMAT( DSY, "O"),
" -> ",
DATETIMEFORMAT( CHANGETIMEZONE(DSY, "US/Hawaii", "Europe/Athens"), "O")
)
Jos määrität Laskettu kenttä -tyypin DSY-tietolähteen arvoksi DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN")
, DSX-tietolähde palauttaa tekstin 2021-06-01T12:55:00.0000000+00:00 -> 2021-06-02T01:55:00.0000000+00:00'. Tämä teksti ilmaisee, että kahden annetun aikavyöhykkeen välinen aikaero 1. kesäkuuta on yli 24 tuntia. Näin ollen muunnettu päivämäärä/aika-arvo on yhden päivän myöhempi kuin annettu päivämäärä/aika-arvo, koska kohdeaikavyöhyke on perusaikavyöhykettä edellä.
Esimerkki 4
Saatat saada ulkoisesta lähteestä päivämäärä/aika-leiman tekstinä, joka ei sisällä aikavyöhyketietoja. Saatat kuitenkin tietää aikavyöhykkeen, jolla lähdettä ylläpidetään. Voit esimerkiksi saada päivä/aika-leiman 01/12/2021 12:55:00 palvelulta, jota ylläpidetään Espanjassa. Tämän päivämäärä/aika-arvon virheetön tallennus tietokantaan edellyttää seuraavaa muunnosta:
Määritä Laskettu kenttä -tyypin DSY-tietolähde muuntamaan päivämäärä/aika-leima tekstistä koordinoidun yleisajan päivämäärä/aika-arvoksi.
DATETIMEVALUE ("01/12/2021 12:55:00", "dd/MM/yyyy HH:mm:ss", "ES")
Määritä Laskettu kenttä -tyypin DSX-tietolähde vaihtamaan muunnettu päivämäärä/aika-arvo koordinoituun yleisaikaan ulkoisen lähteen aikavyöhykkeen päivämäärä/aika-arvoksi.
CHANGETIMEZONE(DSY, "Romance Standard Time", "GMT Standard Time")
Muistiinpano
Kun käytät CHANGETIMEZONE
-funktiota päivämäärä/aika-muunnokseen, ota huomioon, että mikä tahansa päivämäärä/aika-arvo tallennetaan tietokantaan koordinoidun yleisajan aikavyöhykkeen mukaisena arvona. Ennen kuin tämä arvo voidaan esittää sovellussivuilla, se muunnetaan. Muunnoksessa otetaan huomioon aikavyöhyke joka on määritetty kulloinkin kirjautuneena olevan sovelluksen käyttäjän ensisijaisesi aikavyöhykkeeksi.