У меня есть таблица со столбцом timestamp
в PostgreSQL, и мне нужно рассчитывать взаимодействия в течение 24 часов. Пример данных:
CREATED
-----------------
2019-04-03 17:20:50
2019-04-03 17:20:59
2019-04-03 18:41:18
2019-04-04 09:58:49
2019-04-04 09:58:53
2019-04-04 09:58:59
2019-04-04 10:01:55
2019-04-04 14:52:52
2019-04-04 15:10:43
2019-04-04 15:10:53
2019-04-04 17:15:39
Ожидаемый результат:
MIN(CREATED) MAX(CREATED) TOTAL
2019-04-03 17:20:50 2019-04-04 17:15:39 11
У меня сейчас есть скрипт, в котором я конвертирую дату в секунды, но получаю следующее:
SELECT
TIMESTAMP WITH TIME ZONE 'epoch' +
INTERVAL '1 second' * trunc(extract('epoch' from created) / 86400) * 86400 as filtro,
min(created),
max(created),
count(*)
FROM whts
GROUP BY filtro
ORDER BY max(created) desc;
FILTRO MIN(CREATED) MAX(CREATED) TOTAL
2019-04-04 00:00:00.000000 2019-04-04 09:58:49.000000 2019-04-04 17:15:39.000000 8
2019-04-03 00:00:00.000000 2019-04-03 17:20:50.000000 2019-04-03 18:41:18.000000 3
Он должен возвращать одну строку, поскольку первый created
был: 2019-04-03 17: 20: 50 и последний 2019-04-04 17: 15: 39 . Нет 24 часа прошло.