Функции для даты и времени

Функции для даты и времени — это функции для работы с данными типов DATE, TIME, TIMESTAMP и TIMESTAMPTZ.

current_time()

Описание

Возвращает текущее время в виде значения типа TIME.

Использование

current_time или current_time()

Псевдонимы

get_current_time()

Посмотреть пример
SELECT
    current_time       AS cur_time_1,
    current_time()     AS cur_time_2,
    get_current_time() AS cur_time_3;
+-----------------+-----------------+-----------------+
|    cur_time_1   |    cur_time_2   |    cur_time_3   |
+-----------------+-----------------+-----------------+
| 10:33:24.016000 | 10:33:24.016000 | 10:33:24.016000 |
+-----------------+-----------------+-----------------+

now()

Описание

Возвращает текущее время в виде значения типа TIMESTAMPTZ

Использование

now()

Посмотреть пример
SELECT
    now() AS cur_time;
+----------------------------------+
| cur_time                         |
+----------------------------------+
| 2025-08-26 13:38:58.461000+00:00 |
+----------------------------------+

datepart()

Описание

Возвращает указанную часть от значения даты или времени в виде значения типа BIGINT.

Использование

datepart('<part>', (TIME | DATE | ...) '<date_time>')

Псевдонимы

date_part()

Аргументами могут быть значения типов: TIME, DATE, TIMESTAMP или TIMESTAMPTZ.

Части могут быть указаны с помощью следующих литералов
  • century — век

  • day — день

  • decade — десятилетие

  • hour — час

  • microseconds — микросекунды

  • millennium — тысячелетие

  • milliseconds — миллисекунды

  • minute — минута

  • month — месяц

  • quarter — квартал

  • second — секунда

  • year — год

Посмотреть примеры
SELECT
    datepart('milliseconds', TIMESTAMP '2025-02-25 00:00:00.1') AS milliseconds,
    datepart('hour',         TIME '2025-02-25 00:00:00')        AS hour,
    datepart('millennium',   DATE '2025-02-25')                 AS millennium;
+--------------+------+------------+
| milliseconds | hour | millennium |
+--------------+------+------------+
| 100          | 0    | 3          |
+--------------+------+------------+

date_diff()

Описание

Возвращает количество единиц времени между двумя моментами времени в виде значения типа BIGINT.

Использование

date_diff('<part>', start, end)

Аргументами могут быть значения типов: TIME, DATE, TIMESTAMP или TIMESTAMPTZ.

Единицы могут быть указаны с помощью следующих литералов
  • century — век

  • day — день

  • decade — десятилетие

  • hour — час

  • microseconds — микросекунды

  • millennium — тысячелетие

  • milliseconds — миллисекунды

  • minute — минута

  • month — месяц

  • quarter — квартал

  • second — секунда

  • year — год

Посмотреть примеры
SELECT
    date_diff('second', TIME '01:02:03', TIME '03:02:01') AS diff_in_seconds,
    date_diff('minute', TIME '01:02:03', TIME '03:02:01') AS diff_in_minutes,
    date_diff('hour',   TIME '01:02:03', TIME '03:02:01') AS diff_in_hours,
    date_diff('day',    TIMESTAMP '2025-02-25 01:02:03', TIMESTAMP '2025-02-26 03:02:01') AS diff_in_days,
    date_diff('day',    TIMESTAMP '2025-02-26 01:02:03', TIMESTAMP '2025-02-25 03:02:01') AS diff_in_days,
    date_diff('day',    DATE '2024-02-27', DATE '2025-02-27') AS diff_in_days;
+-----------------+-----------------+---------------+--------------+--------------+--------------+
| diff_in_seconds | diff_in_minutes | diff_in_hours | diff_in_days | diff_in_days | diff_in_days |
+-----------------+-----------------+---------------+--------------+--------------+--------------+
| 7198            | 120             | 2             | 1            | -1           | 366          |
+-----------------+-----------------+---------------+--------------+--------------+--------------+

Оператор +

Описание

Прибавляет правый аргумент к левому.

Использование

<num> + <num> [+ ...] или TIME + INTERVAL [+ ...]

Если используется с типами для для даты и времени, то прибавляет интервал к значению времени. Возвращает значение типа TIME.

См. также add().

Посмотреть примеры
SELECT
    3 + 2      AS result_1,
    3 + 2 + -1 AS result_2,
    1.1 + 1.9  AS result_3;
+----------+----------+----------+
| result_1 | result_2 | result_3 |
+----------+----------+----------+
| 5        | 4        | 3.0      |
+----------+----------+----------+
SELECT
    TIME '12:11:10'     + INTERVAL 3 hours AS result_time_1,
    INTERVAL '12:11:10' + TIME '1:1:1'     AS result_time_2;
+---------------+---------------+
| result_time_1 | result_time_2 |
+---------------+---------------+
| 15:11:10      | 13:12:11      |
+---------------+---------------+

Оператор -

Описание

Вычитает правый аргумент из левого.

Использование

<num> - <num> [- ...] или TIME - INTERVAL [- ...]

Если используется с типами для для даты и времени, то вычитает интервал из значения времени. Возвращает значение типа TIME.

См. также subtract().

Посмотреть примеры
SELECT
    3 - 2      AS result_1,
    3 - 2 - +1 AS result_2,
    1.2 - 0.2  AS result_3;
+----------+----------+----------+
| result_1 | result_2 | result_3 |
+----------+----------+----------+
| 1        | 0        | 1.0      |
+----------+----------+----------+
SELECT
    TIME '12:11:10' - INTERVAL 3 HOUR AS result_time_1,
    TIME '12:11:10' - INTERVAL 3 HOUR - INTERVAL 1 HOUR AS result_time_2;
+---------------+---------------+
| result_time_1 | result_time_2 |
+---------------+---------------+
| 09:11:10      | 08:11:10      |
+---------------+---------------+