A PostgreSQL formázási módszerek hasznos eszközgyűjteményt tartalmaznak a különböző adattípusok (dátum / idő, egész szám, lebegőpontos, numerikus) lefordított karakterláncokká történő lefordításához és a formázott karakterláncok egyedi adattípusokká történő visszafordításához. Ezentúl néha időzónákat is át kell alakítanunk. Az időzítést mindig UTC-ben rögzítik a PostgreSQL időbélyegzőiben az időzóna adatlapján, de alapértelmezés szerint a böngészőben, a munkamenetben vagy a felhasználó helyi idejében jelenik meg. Az egyik segítő funkciója, amelyre támaszkodunk, a TO_CHAR () metódus, amely lehetővé teszi az időbélyegek és az időzónával rendelkező időbélyegek használatát, többek között, és lehetővé teszi az időbélyeg darabjainak rendezését, ahogy tetszik. Az időbélyeg, a dupla pontosság, az időtartam, a szám vagy a numerikus érték mind karakterlánccá konvertálható a PostgreSQL TO_CHAR () módszerrel. Úgy tűnik, hogy létezik egy argumentumú "to_timestamp" metódus, amely kettős pontosságú argumentumot vesz fel, és átalakul az Unix korszakból az időbélyegbe az időzóna használatával. Ebben a bejegyzésben megmutatjuk, hogyan kell ezzel foglalkozni. Először nézzük meg közelebbről a to_char () -t.
Szintaxis:
A to_char () függvény általános szintaxisa a következő:
>> To_char (kifejezés, formátum);A PostgreSQL TO_CHAR () metódusának két állításra van szüksége:
- Kifejezés: Időbélyegző, időtartam, szám, kettős pontosság vagy numerikus érték, amelyet karakterláncra fordítanak egy adott formátum szerint, mind kifejezésekként használhatók.
- Formátum: Az a stílus, amelyben a kimeneti karakterlánc megjelenik. A formátum a kifejezés típusától függően eltérő lehet, pl.g., szám, dátum.
Két időbélyegtípus áll rendelkezésre a PostgreSQL-ben:
- Időbélyeg: időzóna nélkül.
- Timestamptz: időzónával.
És itt van a kérdés: a szokásos időbélyeg adatlap nem ismeri az időzónákat. És SQL szükségszerűség (túlmutatónak tűnik). A fő hangsúly a to_Char () időbélyeg megtanulása időzónával. Ha el akarja kezdeni a PostgreSQL használatát a 'to_char ()' funkcióval, nyissa meg a PostgreSQL parancssori héjat, és adja meg a kötelező szerver, adatbázis, portszám, felhasználónév és jelszó paraméterértékeit. Hagyja kitöltetlenül ezeket a szempontokat, ha az alapértelmezett paramétereket kell elfogyasztania, amint az az alábbi képen látható.
To_char () A karakterlánc számához
A to_Char () függvény fogalmának megértéséhez az időbélyeg és időzóna használatával először ki kell próbálnia a karakterláncok példáját. Tehát van egy „1897” számunk, és ezt átalakítjuk a „9999” -re.99 'formátum az alábbi lekérdezéssel. Az alábbi kimenetből láthatja, hogy a karakterlánc száma a megadott formátumra lett konvertálva.
>> SELECT to_char (1897, '9999.99 ');
Itt van egy másik illusztráció az átalakításhoz. Ezúttal egy számot alakítottunk át egy másik formátumba, benne vesszővel. A „G” karaktert vessző megadására használjuk.
>> SELECT to_char (367.78, '9G999.99 ');
To_char időbélyegző az időzónával
Az Időbélyeg időzónával fogalmának megértéséhez vegyünk egy egyszerű példát. Tegyük fel, hogy „Pakisztánban” tartózkodik, ezért az időzónájának jelenleg „PKT” -nek kell lennie.
01. példa:
Próbáljuk meg lekérni az aktuális időbélyeget a SELECT lekérdezésben, miközben átalakítjuk Dátum-idő formátumba, az alábbi lekérdezés szerint. A „TZ” kifejezést a jelenlegi időzóna visszaadására használják. A kimenet megjeleníti a napot, a dátumot, az időt és az időzónát.
>> SELECT to_char (CURRENT_TIMESTAMP, 'Nap H dd, éééé HH12: MI AM (TZ)');
Változtassuk időzónánkat „Európa / Róma” -ra.
>> SET TimeZone = 'Európa / Róma';
Más időpontot, dátumot és időzónát kap, amikor ugyanazt a SELECT lekérdezést próbálja ki, az ábra szerint.
02. példa:
Amikor a SELECT lekérdezésben megadja az időzónát, akkor a kimenet nem mutatja az aktuális időzónát az alábbi kimenet szerint.
>> SELECT to_char (CURRENT_TIMESTAMP IDŐZónában: „Ázsia / Jeruzsálem”, „éééé HH12: MI AM (TZ)”);
03. példa:
Hozzunk létre egy „time” nevű gyors táblázatot két mezővel. Az egyik TIMESTAMP típusú, a másik TIMESTAMPTZ típusú.
>> CREATE TABLE time (időzónás TIMESTAMP nélkül, időzónával TIMESTAMPTZ);
Most ellenőrizzük az aktuális időzónát, amelyet a rendszerünkben használtunk a SHOW paranccsal a shellben az alábbiak szerint:
>> MUTATJA az időzónát;
Most be kell illesztenie az eszközön használt aktuális időzóna dátumának és időpontjának aktuális értékeit az „idő” táblába az alább látható „most ()” funkció használatával.
>> INSERT INTO time VALUES (most (), most ());
Most lekérheti a rekordot az 'time' táblából az alább megadott SELECT lekérdezéssel. A "nélkül_időzóna" oszlop az aktuális dátumot és időt mutatja időzóna nélkül, míg a "időzónával együtt" oszlop a helyi időt mutatja az időzónával teljesen.
>> SELECT * FROM idő;
Változtassuk az időzónát "US / EASTERN" -re az alábbi lekérdezésben.
>> BEÁLLÍTÁS ÜZLETI IDŐZÓNA „USA / KELET”;
Most ellenőrizzük újra a táblázatot. Látni fogja, hogy a 'with_timezone' oszlop értéke hogyan jelenik meg az 'US / EASTERN' időzóna szerint, de a 'without_timezone' értéke megegyezik az előzővel.
>> SELECT * FROM idő;
44. példa:
Nézzünk még néhány példát a to_char () metódusra. Tegyük fel, hogy ugyanaz a táblázat fenti idő. Átkonvertáljuk a 'without_timezone' oszlop értékét stringekké, amely órákból, percekből, másodpercekből és időzónákból áll. Próbáljuk meg a SELECT lekérdezést a to_char () metódussal az 'oszlopérték' nélkül_időtartomány 'konvertálásához. A 'TZ' szót megemlítettük lekérdezésünkben, de az nem fogja megjeleníteni az időzónát, mert az oszlop értéke nem az időzónából áll. Az alább megadott parancs adja meg a kimenetet:
>> SELECT to_char (időzóna nélkül, 'HH12: MI: SS TZ') FROM time;
Most próbáljuk meg ugyanazt a lekérdezést a másik 'with_timezone' oszlop esetében, hogy alakítsuk át órák, percek, másodpercek és időzónák karakterláncává. Ezúttal az időzónát is megjeleníti az idővel, az alábbi lekérdezés segítségével.
>> SELECT to_char (with_timezone, 'HH12: MI: SS TZ') FROM time;
Következtetés:
Mivel az időzónával / anélkül probléma nemcsak a tábla particionálását érinti, javasoljuk, hogy amikor csak lehetséges, használja az időzóna típust. Szinte minden irányelv megvitatta, hogyan lehet az időtől függő tisztítást végezni a PostgreSQL-ben helyi órák használatával. Egy megfelelő, időzónára érzékeny megoldás kevés bonyodalommal jár, de a jövőben megmenthet a bajtól.