december 6, 2021

Oracle Time Zone

amikor azt hitted, hogy tudod, hol vagy, az Oracle időzónákat vezetett be, hogy teljesen zónázzon minket. Gyere, és nézzük meg, hol vagyunk ezen a nagyszerű bolygón.

néhány cikk a dátum adattípus és az időbélyeg adattípus összehasonlításáról. Ez a cikk egy lépéssel tovább megy, és feltárja az Oracle időzóna funkcióját az időbélyeg adattípusában. Különösen az Oracle hozzáadta az” időzónával “és a” helyi időzónával ” az időbélyeg adattípusához.

érvényes időzónák

két lehetőség közül választhat, amikor beállítja, hogy az adatbázis melyik időzónához tartozik. Akkor sem minősíteni, mint egy elmozdulás GMT / UTC formátumban ‘hh:mm’, vagy megadhatja, mint egy nevet, amely egy bejegyzést a V$időzóna tábla. Az 1. lista azt az SQL-t mutatja, amelyet az érvényes időzóna nevének megjelenítéséhez használtam a Mountain Standard időzónában.

lista 1
MST érvényes időzónanevek megjelenítése

SQL> select tzname,tzabbrev from V$TIMEZONE_NAMES where tzabbrev = 'MST'TZNAME TZABBREV------------------------- ----------America/Denver MSTAmerica/Edmonton MSTAmerica/Ensenada MSTAmerica/Mazatlan MSTAmerica/Mexico_City MSTAmerica/Phoenix MSTAmerica/Regina MSTAmerica/Shiprock MSTAmerica/Tijuana MSTCanada/East-Saskatchewan MSTCanada/Mountain MSTCanada/Saskatchewan MSTEurope/Moscow MSTMexico/BajaNorte MSTMexico/BajaSur MSTMexico/General MSTMST MSTMST7MDT MSTNavajo MSTUS/Arizona MSTUS/Mountain MSTW-SU MST

DBTIMEZONE

az időzónák középpontjában az adatbázis időzónája található. Az adatbázis létrehozásakor kiválasztott időzónát úgy tekintheti meg, hogy kiadja az SQL-t a 2.listában. Ha meg akarja változtatni a DBTIMEZONE – t, ki kell adnia egy ALTER DATBASE parancsot, például a 3.listában. Annak érdekében, hogy az új DBTIMEZONE életbe léphessen, vissza kell ugrálnia az adatbázist. Továbbá, ha bármilyen adattípus oszlopok, amelyek az időbélyeg időzóna meghatározott, akkor nem lesz képes visszaállítani a DBTIMEZONE. Az adatbázis visszapattanása után kiadhatja az SQL-t a 4. listában annak igazolására, hogy a változás megtörtént. Ha vissza akart váltani a ” hh:mm ” formátum a DBTIMEZONE számára, csak adja ki az SQL-t az 5. listában.

lista 2
ellenőrizze az adatbázis időzónáját

SQL> select DBTIMEZONE from dual;DBTIME-------07:00

3. lista
az adatbázis időzónájának módosítása

SQL> ALTER database SET TIME_ZONE = 'America/Denver';Database altered.

4. felsorolás
érvényesítse a dbtimezone változását

SQL> select DBTIMEZONE from dual;DBTIMEZONE---------------America/Denver

Listing 5
állítsa vissza a DBTIMEZONE-t óó:mm formátumra

SQL> ALTER database SET TIME_ZONE = '-07:00';

SESSIONTIMEZONE

ha nem szeretné használni az adatbázis időzónáját, az Oracle lehetőséget ad arra, hogy az időzónát a munkamenet szintjén állítsa be. Adja ki az SQL-t a 6. listában, ha más időzónát szeretne az aktuális munkamenethez, amelyhez csatlakozik. A munkamenet időzónáját az SQL kiadásával ellenőrizheti a 7. listában.

felsorolás 6
időzóna beállítása a munkamenet szintjén

SQL> alter session set TIME_ZONE='-03:00';Session altered.

Listing 7
munkamenet szintű időzóna ellenőrzése

SQL> select SESSIONTIMEZONE from dual;SESSIONTIMEZONE--------------------------------------------------03:00

SYSTIMESTAMP

ahogy van egy hívás SYSDATE, hogy az aktuális rendszer dátum és idő, van egy hívás, hogy az aktuális rendszer dátum, idő és időzóna. A visszaadott adattípus időbélyeg időzónával. Adja ki az SQL-t a 8. listában, hogy megkapja az aktuális rendszeridő-információkat.

lista 8
aktuális rendszer időbélyeg lekérése időzóna információkkal

SQL> select SYSTIMESTAMP from dual;SYSTIMESTAMP-----------------------------------------------01-SEP-03 10.53.13.574000 AM -07:00

CURRENT_TIMESTAMP

a systimestamp függvény számláló része a munkamenet aktuális dátumához és idejéhez a CURRENT_TIMESTAMP függvényhívás. Ez visszaadja a munkamenet aktuális időbélyegzőjét a munkamenet időzónájához (SESSIONTIMEZONE) viszonyítva. Ezért, ha megvan a munkamenet időzónája a 6. listában meghatározottak szerint, ellenőrizhetjük a munkamenet időbélyegét az SQL kiadásával a 9.listában.

lista 9
munkamenet helyi időbélyege

SQL> select CURRENT_TIMESTAMP from dual;CURRENT_TIMESTAMP-------------------------------------------------01-SEP-03 02.53.33.753000 PM 03:00

időbélyeg adattípus az IDŐZÓNAINFORMÁCIÓ

az időzónainformációk táblázaton belüli tárolásának középpontjában az Oracle meghatározta az időbélyeg adattípusát. Ez az Oracle nagyszerű új reménye arra, hogy a régi dátum adattípusnak részletesebb mechanizmust adjon nemcsak a dátum-és időinformációk, hanem a tört másodpercek tárolására is. Nézze meg az Oracle dátum-és időbélyeg-adattípusainak összehasonlítását a databtype megvitatásához. A cikk további részében, valamint az időbélyeg adattípus időzóna-beállításainak kihasználása céljából létrehoztam egy táblázatot az 1. táblázatban meghatározottak szerint. A 10. listában létrehoztam egy gyors példát arra, hogy az időzóna időbélyegzője és a helyi időzóna-adattípusok időbélyegzője hogyan fog viselkedni, amikor információkat tárolnak. Először is beállítottam a DBTIMEZONE és a SESSION időzónát, hogy ugyanaz az érték ‘-07: 00’ legyen. Ezután beillesztem a DATE_TABLE-be a rendszer időbélyegzőjének értékét. Ezután az aktuális munkamenet időzónáját csak ‘-03:00’értékre változtatom. Ez az aktuális munkamenetet négy órával az adatbázis időzónája előtt állítja be. Ezután beillesztem a DATE_TABLE-be egy sort, amely az aktuális munkamenet időbélyegét fogja tartani. A fő gondolat, hogy megragad itt az, hogy az oszlop adattípus időbélyeg időzónával tárolja és megjeleníti az explicit időt biztosított az INSERT utasítás. A helyi időzónával rendelkező adattípus-időbélyeggel ellátott oszlop tárolja a megadott explicit időt, de az aktuális munkamenet időzónájához viszonyított értéket jelenít meg. Ez azt jelenti, hogy ha kemény és gyors időbélyegeket szeretne tárolni az időzóna-információkkal, akkor az időzóna-adattípusú időbélyegzőt kell használnia. Ha jobban érdekli a dátum – és időadatok megadása a különböző időzónákban lévő és a helyi időben megjelenített ügyfelek számára, akkor használja az időbélyeget a helyi időzóna-adattípussal.

1. táblázat:

Táblázat létrehozása különböző időbélyeg oszlopokkal

create table date_table ( time_stamp_tz TIMESTAMP WITH TIME ZONE, time_stamp_ltz TIMESTAMP WITH LOCAL TIME ZONE);

lista 10
SYSTIMESTAMP beszúrása a DATE_TABLE-be

SQL> select dbtimezone,sessiontimezone from dual;DBTIMEZONE SESSIONTIMEZONE---------- -----------------07:00 -07:00SQL> insert into date_table values (SYSTIMESTAMP,SYSTIMESTAMP);1 row created.SQL> alter session set time_zone='-03:00';Session altered. SQL> select dbtimezone,sessiontimezone from dual;DBTIMEZONE SESSIONTIMEZONE---------- -----------------07:00 -03:00SQL> insert into date_table values (LOCALTIMESTAMP,LOCALTIMESTAMP );1 row created.SQL> select time_stamp_tz, time_stamp_ltz from date_table;TIME_STAMP_TZ TIME_STAMP_LTZ------------------------------------- ------------------------------01-SEP-03 10.57.36.642000 AM -07:00 01-SEP-03 02.57.36.642000 PM01-SEP-03 02.57.48.549000 PM -03:00 01-SEP-03 02.57.48.549000 PMSQL> alter session set time_zone='-07:00';Session altered.SQL> select time_stamp_tz, time_stamp_ltz from date_table;TIME_STAMP_TZ TIME_STAMP_LTZ------------------------------------- ------------------------------01-SEP-03 10.57.36.642000 AM -07:00 01-SEP-0310.57.36.642000 AM01-SEP-03 02.57.48.549000 PM -03:00 01-SEP-0310.57.48.549000 AM

mindannyian felnőttünk és elfogadtuk az időzónákat. Mindig könnyű volt megtenni az óránkénti különbséget a fejünkben, amikor felhívunk valakit, vagy más időzónába utazunk. Valamilyen oknál fogva az időzónák GMT/UTC eltolásokkal történő megvalósítása megnehezítette számomra, hogy megfogalmazzam és kitaláljam, hol és mennyi az idő valójában. Azt javasolnám, hogy játszadozzatok azzal a példával, amit adtam nektek, hogy megismerhessétek ezt a tulajdonságot, és hogy hol a földön vagytok.

” James Koopmann Rovatvezető összes cikkének megtekintése

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.