V Postgresu to_char()
je funkce formátování datového typu, která převádí svůj první argument na řetězec.
Formát řetězce je určen druhým argumentem.
to_char()
funkci lze použít k provedení následujících převodů:
- časové razítko do řetězce
- interval do řetězce
- celé číslo na řetězec
- skutečná/dvojitá přesnost řetězce
- číselné na řetězec
Syntaxe
Syntaxe vypadá takto:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Kde první argument je hodnota, která se má převést (v kterémkoli z uvedených datových typů) a text
je formátovací řetězec, kterým se formátuje první argument.
Příklad
Zde je příklad formátování hodnoty data:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Výsledek:
Friday , 25 December 2020
V tomto případě formátovací řetězec Day, DD Month YYYY
určuje, jak je datum naformátováno, když je vráceno jako řetězec pomocí to_char()
.
Vzory šablon
Formátovací řetězec se skládá z jednoho nebo více vzorů šablon .
V předchozím příkladu byl můj formátovací řetězec Day, DD Month YYYY
. Proto se skládal z následujících vzorů šablon:
Day
DD
Month
YYYY
Mohl jsem použít více či méně šablon šablon a výstup by byl jiný.
Mohl jsem například udělat následující:
SELECT to_char(date '2020-12-25', 'Day');
Výsledek:
Friday
Alternativně by můj formátovací řetězec mohl sestávat z úplně jiné řady vzorů šablon.
Například:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Výsledek:
Fri, 25 Dec 20
Modifikátory vzoru šablon
Do formátovacího řetězce můžete také přidat modifikátory vzoru šablony.
Výsledek se bude mírně lišit v závislosti na použitém modifikátoru.
Například následující příklad představuje den v měsíci jako pořadové číslo.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Výsledek:
Friday , 25 December 2020
Toto je stejné jako první příklad, ale rozdíl je v tom, že jsem přidal th
modifikátor šablony jako přípona k DD
vzor šablony. Tím se ke dni v měsíci připojí přípona pořadového čísla.
Proto skončíme na 25. místo pouhých 25 .
Chcete-li zdůraznit účinek modifikátoru šablony, zde je návod, jak vypadá při použití na různé hodnoty.
SELECT
to_char(date '2020-12-01', 'DDth') AS "1",
to_char(date '2020-12-02', 'DDth') AS "2",
to_char(date '2020-12-03', 'DDth') AS "3",
to_char(date '2020-12-04', 'DDth') AS "4";
Výsledek:
1 | 2 | 3 | 4 ------+------+------+------ 01st | 02nd | 03rd | 04th
V případě potřeby bych mohl přidat další modifikátor pro potlačení úvodních nul.
SELECT
to_char(date '2020-12-01', 'FMDDth') AS "1",
to_char(date '2020-12-02', 'FMDDth') AS "2",
to_char(date '2020-12-03', 'FMDDth') AS "3",
to_char(date '2020-12-04', 'FMDDth') AS "4";
Výsledek:
1 | 2 | 3 | 4 -----+-----+-----+----- 1st | 2nd | 3rd | 4th
V tomto případě jsem přidal FM
což je pro „režim plnění“. Tento modifikátor potlačuje úvodní nuly a výplňové mezery.
Číselné
Předchozí příklad lze také použít na číselné hodnoty.
Při použití číselných hodnot však budete muset zaměnit D
buď 9
nebo 0
.
SELECT
to_char(1, '9th') AS "1",
to_char(2, '9th') AS "2",
to_char(3, '9th') AS "3",
to_char(4, '9th') AS "4";
Výsledek:
1 | 2 | 3 | 4 ------+------+------+------ 1st | 2nd | 3rd | 4th
Seznam vzorů a modifikátorů šablon
Skutečné vzory šablon, které můžete použít, závisí na tom, zda formátujete hodnotu data/času nebo číslo.
Úplný seznam dostupných vzorů šablon naleznete na adrese:
- Vzory a modifikátory šablon pro formátování data/času
- Vzory a modifikátory šablon pro číselné formátování