TIME

TIME

В диалекте 3 TIME хранит время дня без даты: "только время". Для хранения используется 32-битовое беззнаковое целое. Диапазон времени от 00:00 до 23:59:59.9999.

В диалекте 1 нет эквивалента типу TIME. Если нужно сохранить время дня, выделите элементы часов, минут и секунд из данных DATE и преобразуйте в строку. Технические советы есть дальше в этой главе - обратитесь к разд. "Комбинирование EXTRACT() с другими функциями".

Интервал времени

Ошибочно предполагать, что тип TIME может хранить интервал времени. Он не может. Для вычисления интервала времени вычтите более позднюю дату или время из более раннего. Результатом будет число NUMERIC(18,9), выражающее интервал в днях. Поскольку точность теряется, доли секунд надо рассматривать как миллисекунды, а не десятитысячные доли секунд. Используйте обычные арифметические операции для конвертирования дней в часы, минуты или секунды, как вам требуется.

Предположим, что столбцы STARTED и FINISHED имеют тип TIMESTAMP (DATE В диалекте 1). Для вычисления и сохранения в столбце TIME_ELAPSED типа DOUBLE PRECISION интервала времени в минутах вы можете использовать следующее[25]:

UPDATE ATABLE

SET TIME_ELAPSED = (FINISHED - STARTED) * 24 * 60

WHERE ((FINISHED IS NOT NULL) AND (STARTED IS NOT NULL));