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.