sql >> Databáze >  >> RDS >> PostgreSQL

Jak to_timestamp() funguje v PostgreSQL

Podle dokumentace PostgreSQL existují dvě funkce zvané to_timestamp() :

  • Jeden převede epochu Unixu na časové razítko. Unixová epocha je počet sekund od 1970-01-01 00:00:00+00.
  • Druhý převede řetězec na časové razítko.

Přesněji řečeno, každá funkce převede hodnotu na časové razítko s časovým pásmem hodnotu.

Ačkoli dokumentace Postgres je prezentuje jako dvě samostatné to_timestamp() funkce, prezentuji je, jako by to byla jedna funkce, která přijímá buď jeden argument, nebo dva.

Syntaxe

Můžete použít to_timestamp() následujícími způsoby:

to_timestamp(double precision)
to_timestamp(text, text)

Při použití první syntaxe je argument poskytnut jako dvojitá přesnost hodnotu, a je to hodnota Epoch, s dvojnásobnou přesností, kterou chcete převést na časové razítko.

Při použití druhé syntaxe je prvním argumentem datum a druhým argumentem je formátovací řetězec.

Převést epochu Unix

Zde je základní příklad, který demonstruje, jak převést Epochu na časové razítko.

SELECT to_timestamp(1658792421);

Výsledek:

2022-07-26 09:40:21+10

V mém případě je posun časového pásma +10 a to je to, co se vrací.

Zlomkové sekundy

Zde je příklad se zlomky sekund.

SELECT to_timestamp(1658792421.123456);

Výsledek:

2022-07-26 09:40:21.123456+10

Formátování

Zde je příklad použití druhé syntaxe k formátování hodnoty data.

SELECT to_timestamp('21 October 2022', 'DD Mon YYYY');

Výsledek:

2022-10-21 00:00:00+10

Druhý argument je poskytován k označení, jak je formátován první argument.

Zde je další formát pro další ilustraci tohoto bodu.

SELECT to_timestamp('21/10/2022', 'DD/MM/YYYY');

Výsledek:

2022-10-21 00:00:00+10

Pokud formát druhého argumentu neodpovídá formátu prvního argumentu, můžete skončit s chybou.

Například:

SELECT to_timestamp('21 October 2022', 'DD Mon YYYY');

Výsledek:

ERROR: invalid value "ober" for "YYYY"
DETAIL: Value must be an integer.

Formátovací řetězec (druhý argument) může být libovolný vzor šablony s volitelným modifikátorem.

Zde je úplný seznam vzorů šablon a modifikátorů, které můžete s touto funkcí použít.

Typ návratu

Jak již bylo zmíněno, návratový typ je časové razítko s časovým pásmem . Můžeme to ověřit pomocí pg_typeof() funkce.

SELECT pg_typeof(to_timestamp(1658792421.123456));

Výsledek:

timestamp with time zone

Extrakce částí data

K extrakci částí data z hodnoty časového razítka můžete použít různé metody.

Můžete například použít extract() funkce.

SELECT extract('month' from to_timestamp(1658792421));

Výsledek:

7

A můžete použít to_char() Pokud potřebujete něco udělat, zobrazte název měsíce místo čísla měsíce.

SELECT to_char(to_timestamp(1658792421), 'Month');

Výsledek:

July

A zde používá formátovací syntaxi.

SELECT to_char(to_timestamp('1st Oct 2022', 'FMDDth Mon YYYY'), 'Month');

Výsledek:

October

Pokud máte pouze číslo měsíce, můžete pomocí následujícího příkladu převést číslo měsíce na název měsíce.

SELECT to_char(to_timestamp(3::text, 'MM'), 'Month');

Výsledek:

March

A naopak (převeďte název měsíce na číslo měsíce).

V následujícím příkladu extrahuji číslo měsíce pomocí date_part() jako alternativu k extract() .

SELECT date_part('month', (to_timestamp('Mar 2022', 'Mon')));

Výsledek:

3

  1. 7 způsobů, jak zkontrolovat verzi Oracle

  2. MySQL InnoDB Cluster 8.0 – Kompletní průvodce operací:Část druhá

  3. Jak uložit neomezený počet znaků v Oracle 11g?

  4. Změňte tabulku pro úpravu výchozí hodnoty sloupce