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:
DayDDMonthYYYY
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í