Как корректно задать в CREATE длительность треков (время), то есть чтобы отображались только минуты и секунды в таблице?

Чтобы задать в CREATE длительность треков в виде минут и секунд в таблице PostgreSQL, можно использовать тип данных INTERVAL в сочетании с функцией TO_CHAR для форматирования выводимого значения.

В PostgreSQL тип данных INTERVAL позволяет хранить периоды времени в виде набора значений, включая годы, месяцы, дни, часы, минуты, секунды и так далее. Для задания только минут и секунд, нам понадобится использовать только два компонента.

Создадим таблицу "Tracks" с полем "duration", которое будет содержать длительность трека в минутах и секундах:

CREATE TABLE Tracks (
    id SERIAL PRIMARY KEY,
    name TEXT,
    duration INTERVAL
);

Теперь можно вставлять данные в таблицу, указывая длительность трека в формате "мм:сс" (например, "03:42"):

INSERT INTO Tracks (name, duration)
VALUES ('Track 1', '03:42');

Для отображения значений поля "duration" в виде минут и секунд можно использовать функцию TO_CHAR и указать соответствующий формат:

SELECT name, TO_CHAR(duration, 'MI:SS') AS duration_formatted
FROM Tracks;

Это приведет к выводу данных, где длительность будет отображаться только в минутах и секундах, например:

|   name   | duration_formatted |
|----------|--------------------|
| Track 1  |         03:42      |

Таким образом, с помощью типа данных INTERVAL и функции TO_CHAR в PostgreSQL, можно корректно задать и отобразить длительность треков в минутах и секундах в таблице.