time
будет очевидным кандидатом на сохранение времени в том виде, как вы его описываете.Он обеспечивает диапазон дневного времени (00:00:00
до 24:00:00
) и занимает 8 байт .
или time(0)
, чтобы запретить доли секунды.
interval
допускает произвольные интервалы, даже отрицательные, или даже сочетание положительных и отрицательных, например '1 month - 3 seconds'
- не вписывается в ваше описание - и занимает 16 байт .См .:
Если вы хотите оптимизировать размер хранилища, сделайте его integer
( 4 байта ), означающие секунды.Чтобы преобразовать time
вперед и назад:
SELECT EXTRACT(epoch FROM time '18:55:28'); -- 68128 (int)
SELECT time '00:00:01' * 68128; -- '18:55:28' (time)