PostgreSQL

Časové razítko PostgreSQL To_char s časovým pásmem

Časové razítko PostgreSQL To_char s časovým pásmem

Metody formátování PostgreSQL zahrnují užitečnou kolekci nástrojů pro překlad různých datových typů (datum / čas, celé číslo, plovoucí desetinná čárka, číslice) na formátované řetězce a překlad formátovaných řetězců zpět na jedinečné datové typy. Od nynějška někdy také musíme převádět časová pásma. Načasování se vždy zaznamenává v UTC v časových značkách PostgreSQL pro datový formulář časových pásem, ale ve výchozím nastavení se zobrazuje v prohlížeči, relaci nebo místním čase uživatele. Jednou z jeho pomocných funkcí, na které jsme se spoléhali, je metoda TO_CHAR (), která mimo jiné umožňuje časová razítka a časová razítka s časovým pásmem a umožňuje vám uspořádat části časového razítka, jak chcete. Časové razítko, dvojitá přesnost, doba trvání, číslo nebo číselná hodnota lze všechny převést na řetězec pomocí metody PostgreSQL TO_CHAR (). Zdá se, že existuje metoda s jedním argumentem „to_timestamp“, která bere argument s dvojitou přesností a transformuje z epochy Unixu na časovou značku pomocí časové zóny. V tomto příspěvku vám ukážeme, jak s tím něco udělat. Pojďme se nejprve blíže podívat na to_char ().

Syntax:

Obecná syntaxe pro funkci to_char () je následující:

>> To_char (výraz, formát);

Metoda TO_CHAR () v PostgreSQL potřebuje dvě tvrzení:

V PostgreSQL jsou k dispozici dva typy časových značek:

A tady je problém: standardní datový formulář časového razítka nezná časová pásma. A je to nezbytnost SQL (jak se to mohlo stát, zdá se za). Naším hlavním zaměřením je naučit se časové razítko_Char () s časovým pásmem. Chcete-li začít pracovat na PostgreSQL s funkcí 'to_char ()', otevřete prostředí příkazového řádku PostgreSQL a doručte hodnoty parametrů pro povinný server, databázi, číslo portu, uživatelské jméno a heslo. Pokud potřebujete využít výchozí určené parametry, jak je znázorněno na následujícím obrázku, nechte tyto úvahy nevyplněné.

To_char () pro číslo řetězce

Abyste pochopili koncept funkce to_Char () pomocí časové značky s časovým pásmem, musíte nejprve vyzkoušet příklad čísel řetězců. Takže máme číslo '1897' a převedeme ho na '9999.99 'formát pomocí níže uvedeného dotazu. Z níže uvedeného výstupu můžete vidět, že číslo řetězce bylo převedeno do zadaného formátu.

>> SELECT to_char (1897, '9999.99 ');

Zde je další ilustrace pro převod. Tentokrát jsme číslo převedli do jiného formátu, který obsahuje čárku. K zadání čárky se použije znak „G“.

>> SELECT to_char (367.78, '9G999.99 ');

To_char Timestamp with TimeZone

Abychom porozuměli konceptu časové značky s časovým pásmem, pojďme zvážit jednoduchý příklad. Předpokládejme, že jste v „Pákistánu“, takže vaše časové pásmo musí být nyní „PKT“.

Příklad 01:

Zkusme načíst aktuální časové razítko v dotazu SELECT a převádět jej do formátu Datum a čas, jak je znázorněno v dotazu níže. Termín „TZ“ se používá k vrácení aktuální časové zóny. Výstup zobrazuje den, datum, čas a časové pásmo.

>> SELECT to_char (CURRENT_TIMESTAMP, 'Day Mon dd, yyyy HH12: MI AM (TZ)');

Změňme naše časové pásmo na „Evropa / Řím“.

>> SET TimeZone = 'Europe / Rome';

Po vyzkoušení stejného dotazu SELECT získáte jiný čas, datum a časové pásmo, jak je znázorněno.

Příklad 02:

Když zadáte TimeZone v dotazu SELECT, nebude výstup zobrazovat aktuální časové pásmo podle níže uvedeného výstupu.

>> SELECT to_char (CURRENT_TIMESTAMP AT TIME ZONE 'Asia / Jerusalem', 'yyyy HH12: MI AM (TZ)');

Příklad 03:

Vytvořme rychlou tabulku s názvem „čas“ se dvěma poli. Jeden je typu TIMESTAMP a druhý je typu TIMESTAMPTZ.

>> CREATE TABLE time (without_timezone TIMESTAMP, with_timezone TIMESTAMPTZ);

Nyní zkontrolujeme aktuální časové pásmo, které používáme v našem systému, pomocí příkazu SHOW v shellu následujícím způsobem:

>> ZOBRAZIT časové pásmo;

Nyní musíte vložit aktuální hodnoty data a času aktuálního časového pásma, které používáte ve svém zařízení, do tabulky „time“ pomocí funkce „now ()“, jak je znázorněno níže.

>> INSERT INTO time VALUES (now (), now ());

Nyní můžete načíst záznam z tabulky „time“ pomocí dotazu SELECT, jak je uvedeno níže. Sloupec „without_timezone“ zobrazuje aktuální datum a čas bez časového pásma, zatímco sloupec „with_timezone“ zobrazuje místní čas s časovým pásmem úplně.

>> VYBRAT * Z ČASU;

Pojďme z níže uvedeného dotazu změnit časové pásmo na „US / EASTERN“.

>> NASTAVTE ČASOVOU ZÓNU „USA / VÝCHODNÍ“;

Nyní se podívejme na tabulku znovu. Uvidíte, jak se zobrazila hodnota sloupce „with_timezone“ podle časového pásma „US / EASTERN“, ale hodnota „without_timezone“ je stejná jako předtím.

>> VYBRAT * Z ČASU;

Příklad 04:

Pojďme si udělat několik dalších příkladů pro metodu to_char (). Předpokládejme stejný „čas“ výše uvedené tabulky. Budeme převádět hodnotu sloupce „without_timezone“ na řetězec, který je tvořen hodinami, minutami, sekundami a časovým pásmem. Zkusme dotaz SELECT pomocí metody to_char () pro převod hodnoty sloupce 'without_timezone'. V našem dotazu jsme zmínili „TZ“, ale časové pásmo se nezobrazí, protože hodnota sloupce nespočívá v časovém pásmu. Níže uvedený příkaz dává výstup:

>> SELECT to_char (without_timezone, 'HH12: MI: SS TZ') FROM time;

Nyní zkusme stejný dotaz v případě druhého sloupce 'with_timezone', převést jej na řetězec hodin, minut, sekund a časových pásem. Tentokrát se také zobrazí časové pásmo s časem pomocí níže uvedeného dotazu.

>> SELECT to_char (with_timezone, 'HH12: MI: SS TZ') FROM time;

Závěr:

Vzhledem k tomu, že problém s časovým pásmem / bez něj ovlivňuje více než jen rozdělení tabulky, doporučuji použít typ časového pásma, kdykoli je to možné. Téměř všechny pokyny pojednávaly o tom, jak provádět časově závislé čištění v PostgreSQL pomocí místních hodin. Správné řešení citlivé na časové pásmo přináší malé komplikace, ale v budoucnu by vás mohlo zachránit před problémy.

Hry Nejlepší hry Oculus App Lab
Nejlepší hry Oculus App Lab
Pokud jste vlastníkem náhlavní soupravy Oculus, musíte mít informace o bočním nakládání. Sideloading je proces instalace neukládaného obsahu do náhlav...
Hry Top 10 her k hraní na Ubuntu
Top 10 her k hraní na Ubuntu
Platforma Windows byla jednou z dominujících platforem pro hraní her kvůli velkému procentu her, které se dnes vyvíjejí, aby nativně podporovaly Windo...
Hry 5 nejlepších arkádových her pro Linux
5 nejlepších arkádových her pro Linux
V dnešní době jsou počítače vážné stroje používané k hraní her. Pokud nemůžete získat nové vysoké skóre, budete vědět, co tím myslím. V tomto příspěvk...