W PostgreSQL możemy użyć extract() funkcja wraz z epoch argument zwracający uniksowy znacznik czasu.
Możemy zwrócić uniksowy znacznik czasu na podstawie bieżącej daty/czasu lub możemy go uzyskać na podstawie innej określonej daty/godziny.
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).
Pobierz aktualny znacznik czasu Unix
Oto przykład pobierania znacznika czasu uniksowego z bieżącej daty i godziny:
SELECT extract(epoch from now()); Wynik:
1650152298.430101
Wartości dat
Oto przykład pobierania uniksowego znacznika czasu z określonej date wartość:
SELECT extract(epoch from date '2030-08-15'); Wynik:
1912982400
W przypadku użycia z date wartości, epoch zwraca nominalną liczbę sekund od 1970-01-01 00:00:00, bez względu na strefę czasową lub zasady czasu letniego.
Wartości sygnatury czasowej
Oto przykład pobierania uniksowego znacznika czasu z określonego timestamp wartość:
SELECT extract(epoch from timestamp '2030-08-15 03:30:45'); Wynik:
1912995045
W przypadku użycia z timestamp wartości, epoch zwraca nominalną liczbę sekund od 1970-01-01 00:00:00, bez względu na strefę czasową lub reguły czasu letniego. To jest to samo, co przy użyciu date wartości.
Stempel czasu z wartością strefy czasowej
Oto przykład pobierania znacznika czasu uniksowego z określonego timestamp with time zone wartość:
SELECT extract(
epoch from timestamp with time zone '2030-08-15 03:30:45.12-08'
); Wynik:
1913023845.12
W przypadku użycia z timestamp with time zone wartości, epoch zwraca liczbę sekund od 1970-01-01 00:00:00 UTC (ujemne dla wcześniejszych znaczników czasu)
Interwały
Możemy również uzyskać uniksowy znacznik czasu z interval wartość:
SELECT extract(epoch from interval '7 days 2 hours'); Wynik:
612000
W przypadku użycia z interval wartości, epoch zwraca całkowitą liczbę sekund w przedziale.