In PostgreSQL, we can use the extract() function along with the epoch argument to return the Unix timestamp.
We can return the Unix timestamp based on the current date/time, or we can get it based on another specified date/time.
The Unix timestamp (also known as Unix Epoch time, Unix time, or POSIX time) is the number of seconds that have elapsed since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC).
Get the Current Unix Timestamp
Here’s an example of getting the Unix timestamp from the current date and time:
SELECT extract(epoch from now());
Result:
1650152298.430101
Date Values
Here’s an example of getting the Unix timestamp from a specified date value:
SELECT extract(epoch from date '2030-08-15');
Result:
1912982400
When used with date values, epoch returns the nominal number of seconds since 1970-01-01 00:00:00, without regard to timezone or daylight-savings rules.
Timestamp Values
Here’s an example of getting the Unix timestamp from a specified timestamp value:
SELECT extract(epoch from timestamp '2030-08-15 03:30:45');
Result:
1912995045
When used with timestamp values, epoch returns the nominal number of seconds since 1970-01-01 00:00:00, without regard to timezone or daylight-savings rules. This is the same as when using date values.
Timestamp With Time Zone Value
Here’s an example of getting the Unix timestamp from a specified timestamp with time zone value:
SELECT extract(
epoch from timestamp with time zone '2030-08-15 03:30:45.12-08'
);
Result:
1913023845.12
When used with timestamp with time zone values, epoch returns the number of seconds since 1970-01-01 00:00:00 UTC (negative for timestamps before that)
Intervals
We can also get a Unix timestamp from an interval value:
SELECT extract(epoch from interval '7 days 2 hours');
Result:
612000
When used with interval values, epoch returns the total number of seconds in the interval.