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