PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak to_timestamp() działa w PostgreSQL

Zgodnie z dokumentacją PostgreSQL istnieją dwie funkcje o nazwie to_timestamp() :

  • Konwertuje się epokę Uniksa na znacznik czasu. Epoka Uniksa to liczba sekund od 1970-01-01 00:00:00+00.
  • Druga konwertuje ciąg na znacznik czasu.

Dokładniej, każda funkcja konwertuje wartość na sygnaturę czasową ze strefą czasową wartość.

Chociaż dokumentacja Postgresa przedstawia je jako dwa oddzielne to_timestamp() funkcje, przedstawiam je tak, jakby były jedną funkcją, która przyjmuje albo jeden argument, albo dwa.

Składnia

Możesz użyć to_timestamp() w następujący sposób:

to_timestamp(double precision)
to_timestamp(text, text)

Używając pierwszej składni, argument jest podawany jako podwójna precyzja wartość i jest to wartość Epoka z podwójną precyzją, którą chcesz przekonwertować na znacznik czasu.

Używając drugiej składni, pierwszym argumentem jest data, a drugim ciąg formatujący.

Konwertuj epokę Uniksa

Oto podstawowy przykład pokazujący, jak przekonwertować Epokę na znacznik czasu.

SELECT to_timestamp(1658792421);

Wynik:

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

W moim przypadku przesunięcie strefy czasowej wynosi +10, więc to jest zwracane.

Ułamki sekund

Oto przykład z ułamkami sekund.

SELECT to_timestamp(1658792421.123456);

Wynik:

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

Formatowanie

Oto przykład użycia drugiej składni do formatowania wartości daty.

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

Wynik:

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

Drugi argument służy do wskazania sposobu formatowania pierwszego argumentu.

Oto inny format, aby lepiej zilustrować ten punkt.

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

Wynik:

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

Jeśli format drugiego argumentu nie jest zgodny z formatem pierwszego argumentu, możesz skończyć z błędem.

Na przykład:

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

Wynik:

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

Ciąg formatu (drugi argument) może być dowolnym wzorcem szablonu z opcjonalnym modyfikatorem.

Oto pełna lista wzorców szablonów i modyfikatorów, których można używać z tą funkcją.

Typ zwrotu

Jak wspomniano, typem zwrotu jest znacznik czasu ze strefą czasową . Możemy to zweryfikować za pomocą pg_typeof() funkcja.

SELECT pg_typeof(to_timestamp(1658792421.123456));

Wynik:

timestamp with time zone

Wyodrębnianie części daty

Możesz użyć różnych metod, aby wyodrębnić części daty z wartości znacznika czasu.

Na przykład możesz użyć extract() funkcja.

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

Wynik:

7

I możesz użyć to_char() funkcja, jeśli musisz zrobić coś takiego, wyświetl nazwę miesiąca zamiast numeru miesiąca.

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

Wynik:

July

A tutaj używa składni formatowania.

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

Wynik:

October

Jeśli masz tylko numer miesiąca, możesz użyć następującego przykładu, aby przekonwertować numer miesiąca na nazwę miesiąca.

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

Wynik:

March

I odwrotnie (zmień nazwę miesiąca na numer miesiąca).

W poniższym przykładzie wyodrębnię numer miesiąca za pomocą date_part() jako alternatywa dla extract() .

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

Wynik:

3

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django:odmowa uprawnień podczas próby uzyskania dostępu do bazy danych po przywróceniu (migracji)

  2. pg_restore Alternatywy - Kopia zapasowa PostgreSQL i automatyczne odzyskiwanie za pomocą ClusterControl

  3. Czy w nazwach kolumn PostgreSQL jest rozróżniana wielkość liter?

  4. Porównanie tabel tymczasowych dla PostgreSQL i Oracle GTT

  5. Partycjonowanie replikacji logicznej z PostgreSQL 13