W PostgreSQL możemy użyć to_timestamp()
funkcja konwertująca wartość znacznika czasu uniksowego na wartość daty/czasu.
Sygnatura czasowa uniksa (znana również jako czas epoki uniksowej, czas uniksowy lub czas POSIX) to liczba sekund, które upłynęły od godziny 00:00:00 w czwartek, 1 stycznia 1970 r., uniwersalny czas koordynowany (UTC).
Przykład
Oto prosty przykład do zademonstrowania:
SELECT to_timestamp(1912995045);
Wynik:
2030-08-15 03:30:45+00
W tym przypadku przekazałem określoną wartość uniksowego znacznika czasu.
Oto kolejny przykład, który dodatkowo pokazuje, w jaki sposób wynik odzwierciedla podaną wartość znacznika czasu uniksowego:
SELECT
now() AS "Current Date/Time",
extract(epoch from now()) AS "Unix Timestamp",
to_timestamp(extract(epoch from now())) AS "And back again...";
Wynik:
Current Date/Time | Unix Timestamp | And back again... -------------------------------+-------------------+------------------------------- 2022-04-19 19:25:27.068737+00 | 1650396327.068737 | 2022-04-19 19:25:27.068737+00
W tym przykładzie użyliśmy now()
aby wyprowadzić aktualną datę i godzinę. Następnie użyliśmy extract()
aby uzyskać uniksowy znacznik czasu z tej wartości daty i godziny. Na koniec użyliśmy to_timestamp()
aby przekonwertować go z powrotem na oryginalną wartość daty i godziny.
Konwertuj na datę
Możemy również rzutować wynik jako date
wartość, aby wyeliminować część czasu:
SELECT to_timestamp(1912995045)::date;
Wynik:
2030-08-15