Tietokanta.Opas

Oraclen tietokannassa aikavyöhykkeet voidaan asettaa eri paikkoihin. Alla on neljä tapaa muuttaa aikavyöhykettä Oraclen käytössä.

Aseta tietokannan Aikavyöhyke

voit asettaa tietokannan aikavyöhykkeen luotaessa tietokantaa. Tätä varten käytetään CREATE DATABASE lausekkeen SET TIME_ZONE lauseketta.

esimerkki:

CREATE DATABASE mySampleDb...SET TIME_ZONE='Australia/Sydney';

tässä tapauksessa käytin aikavyöhykkeen alueen nimeä. Katso kuinka palauttaa luettelo kelvollisista aikavyöhykkeistä Oraclen tietokannassa saadaksesi täydellisen luettelon kelvollisista aluenimistä järjestelmässäsi.

Vaihtoehtoisesti voit käyttää todellista aikavyöhykkeen siirtymää:

CREATE DATABASE mySampleDb...SET TIME_ZONE='+10:00';

jos et nimenomaisesti aseta aikavyöhykettä luodessasi tietokantaa, se oletusarvoisesti siirtyy palvelimen käyttöjärjestelmän aikavyöhykkeelle.

voit myös muuttaa tietokannan nykyistä aikavyöhykeasetusta. Voit tehdä tämän käyttämällä ALTER DATABASE lausetta.

esimerkki:

ALTER DATABASE mySampleDb...SET TIME_ZONE='Australia/Sydney';

huomaa, että tietokannan aikavyöhyke on merkityksellinen vain TIMESTAMP WITH LOCAL TIME ZONE sarakkeiden osalta. Myös Oracle suosittelee, että asetat tietokannan aikavyöhykkeen UTC (0:00) tietojen muuntamisen välttämiseksi ja suorituskyvyn parantamiseksi, kun tietoja siirretään tietokantojen välillä.

Aseta istunnon Aikavyöhyke

voit asettaa istunnon aikavyöhykkeen itsenäisesti tietokannan aikavyöhykkeelle. Kun palautat TIMESTAMP WITH LOCAL TIME ZONE tiedot, ne palautetaan nykyisen istunnon aikavyöhykkeellä.

istunnon aikavyöhyke tulee voimaan myös silloin, kun TIMESTAMP arvo muunnetaan TIMESTAMP WITH TIME ZONE tai TIMESTAMP WITH LOCAL TIME ZONE tietotyypiksi.

voit tehdä pari asiaa aikavyöhykkeen asettamiseksi sessiotasolle.

ORA_SDTZ-ympäristömuuttujan

voit asettaa istunnon aikavyöhykkeen ORA_SDTZ ympäristömuuttujan avulla. Tämä voidaan asettaa seuraaville arvoille:

  • käyttöjärjestelmä paikallinen aikavyöhyke ('OS_TZ')
  • tietokannan aikavyöhyke ('DB_TZ')
  • absoluuttinen poikkeama UTC: stä (esim.'-04:00')
  • aikavyöhykkeen Alueen nimi (esim.'America/St_Kitts')

Tässä muutamia esimerkkejä tämän ympäristömuuttujan asettamisesta UNIX-ympäristöön:

% setenv ORA_SDTZ 'OS_TZ'% setenv ORA_SDTZ 'DB_TZ'% setenv ORA_SDTZ 'America/St_Kitts'% setenv ORA_SDTZ '-04:00'

muuttujan ORA_SDTZ oletusarvo on 'OD_TZ'. Tätä arvoa käytetään, kun muuttujaa ei ole asetettu tai se on asetettu virheelliseksi arvoksi.

ALTER SESSION Statement

voit muuttaa tietyn SQL-istunnon aikavyöhykettä SET TIME_ZONE lausekkeella ALTER SESSION lausekkeessa.

TIME_ZONE voidaan asettaa seuraavia arvoja:

  • paikallinen Aikavyöhyke, kun istunto aloitettiin (local)
  • tietokannan aikavyöhyke (dbtimezone)
  • absoluuttinen poikkeama UTC: stä (esim.'-04:00')
  • aikavyöhykkeen Alueen nimi (esim.'Canada/Eastern')

tässä esimerkki TIME_ZONE asettamisesta tällaisille arvoille:

ALTER SESSION SET TIME_ZONE=local;ALTER SESSION SET TIME_ZONE=dbtimezone;ALTER SESSION SET TIME_ZONE='Canada/Eastern';ALTER SESSION SET TIME_ZONE='-04:00';

voit tarkistaa nykyisen istuntosi aikavyöhykkeen funktiolla SESSIONTIMEZONE.

esimerkki:

SELECT SESSIONTIMEZONE FROM DUAL;

tulos:

Australia/Brisbane 

minun tapauksessani istunnon aikavyöhyke on asetettu Australia / Brisbane.

aikavyöhykkeen lauseke

aikavyöhykkeen lauseke voi sisältää AT LOCAL lausekkeen tai AT TIME ZONE lausekkeen. Jos sisällytät AT LOCAL – lausekkeen, tulos palautetaan nykyisen istunnon aikavyöhykkeellä. Jos mukaan lasketaan AT TIME ZONE lauseke, aikavyöhyke voi olla jokin seuraavista:

  • aikavyöhykkeen Siirtymä
  • aikavyöhykkeen Alueen nimi
  • DBTIMEZONE (tämä funktio palauttaa tietokannan aikavyöhykkeen)
  • SESSIONTIMEZONE (tämä funktio palauttaa nykyisen istunnon aikavyöhykkeen)
  • lauseke, joka palauttaa merkkijonon, jolla on voimassa oleva aikavyöhykemuoto.

esimerkki:

SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '-04:00') AT TIME ZONE '+12:00'FROM DUAL;

tulos:

02/JAN/30 04:30:35.000000000 AM +12:00

tässä tapauksessa käytin FROM_TZ() funktiota muuttaakseni aikaleiman arvon ja aikavyöhykkeen arvoksi TIMESTAMP WITH TIME ZONE. Tämän jälkeen käytin AT TIME ZONE – lauseketta määrittääkseni eri aikavyöhykkeen.

tässä on sama esimerkki, paitsi tällä kertaa täsmennän AT LOCAL:

SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '-04:00') AT LOCALFROM DUAL;

tulos:

02/JAN/30 02:30:35.000000000 AM AUSTRALIA/BRISBANE

Leave a Reply

Sähköpostiosoitettasi ei julkaista.