У випадку, якщо джерелом даних є SQL база даних, із приведенням до згаданих стандартних інтервалів гарно справляються вбудовані функції СУБД для роботи з датами.
Існує ще один (часто вживаний і важливий) інтервал, для обрахунку якого стандартного функціоналу не існує. Це інтервал "5-ти хвилинка".
Спробуємо самостійно написати таку функцію:
CREATE FUNCTION extract_5m_range(timestamp with time zone) RETURNS integer
LANGUAGE plpgsql IMMUTABLE
calc5m_range
AS $_$
begin
return floor(extract('minute' from $1) / 5) + extract('hour' from $1) * 12 + 1;
end; $_$;
Функція отримує аргументом значення з типом даних timestamp with time zone і обраховує для нього номер "п'ятихвилинки" у добі - ціле число від 0 до 288 (номер останньої п'ятихвилинки в добі):
asterisk=# select ts, extract_5m_range(ts) as five_m from queue_log_abandon order by random() limit 3;
ts | five_m
------------------------+--------
2012-01-03 19:40:29+02 | 237
2011-11-30 20:01:25+02 | 241
2012-01-23 22:41:44+02 | 273
(3 rows)
Немає коментарів:
Дописати коментар