Следующее не будет работать в SQLLite, поскольку рекурсивные запросы не поддерживаются, но оно будет работать в Oracle.
Вы можете создать непрерывный временной ряд для дБ Oracle с помощью такого подзапроса:
(SELECT TRUNC (SYSDATE - x / 1440, 'MI') ts
FROM (SELECT LEVEL x
FROM DUAL
CONNECT BY LEVEL <= 60))
Затем свяжите этот временной ряд с данными диаграммы, используя левое соединение, как это:
SELECT TO_CHAR (A.TS, 'DD/MM/YYYY HH24:MI') TS
, b.DATAPOINT1, b.DATAPOINT2
FROM (SELECT TRUNC (SYSDATE - x / 1440, 'MI') ts
FROM (SELECT LEVEL x
FROM DUAL
CONNECT BY LEVEL <= 60)) a
, MY_CHART_DATA b
WHERE a.ts = b.ts(+) ORDER BY a.TS;
Приведенный выше пример будет отображать последние 60 минут и будет работать ** с DBIx :: Chart. Чтобы изменить разрешение на часы, измените «MI» на «HH24», или для каждых 24 часов вы можете вообще не указывать параметр формата даты.
Чтобы изменить диапазон, просто установите для значения CONNECT BY LEVEL количество точек временного ряда, которые необходимо построить с указанным разрешением.
** Примечание: DBIx :: Chart будет блокироваться, если все значения точек данных равны нулю (т. Е. Не определено). Не могу вам помочь, извините.