Вычисление разницы во времени с помощью INTERVAL
На этом шаге вы узнаете, как вычислить разницу во времени между двумя событиями, используя тип данных INTERVAL
(интервал).
Чтобы вычислить разницу во времени, вы можете вычесть одну временную метку из другой. Результатом будет значение INTERVAL
, представляющее разницу.
Давайте вычислим разницу во времени между 'Follow-up Meeting' (последующая встреча) и 'Conference Call' (конференц-звонок). Для этого вы можете использовать подзапрос или соединить таблицу саму с собой (join the table to itself). Вот пример с использованием соединения (join):
SELECT
e1.event_name AS event1,
e2.event_name AS event2,
e2.event_time - e1.event_time AS time_difference
FROM
events e1
JOIN
events e2 ON e1.event_name = 'Conference Call' AND e2.event_name = 'Follow-up Meeting';
Этот запрос соединяет таблицу events
саму с собой, присваивая таблицам псевдонимы e1
и e2
. Затем он выбирает event_name
из обеих таблиц и вычисляет разницу во времени между event_time
'Follow-up Meeting' и 'Conference Call'. Результат будет следующим:
event1 | event2 | time_difference
----------------+-----------------+---------------------
Conference Call | Follow-up Meeting | 1 day 02:00:00
(1 row)
Столбец time_difference
показывает интервал между двумя событиями.
Вы также можете извлечь определенные компоненты из значения INTERVAL
, используя функцию EXTRACT
. Например, чтобы извлечь количество дней из разницы во времени, вы можете использовать следующий запрос:
SELECT
e1.event_name AS event1,
e2.event_name AS event2,
EXTRACT(DAY FROM (e2.event_time - e1.event_time)) AS days_difference
FROM
events e1
JOIN
events e2 ON e1.event_name = 'Conference Call' AND e2.event_name = 'Follow-up Meeting';
Этот запрос извлекает количество дней из time_difference
и отображает его как days_difference
.
Наконец, выйдите из оболочки PostgreSQL:
\q
Это вернет вас в терминал.