Python 2.6 - Как получить часы из отметки времени

Я работаю с базой данных cx_Oracle с записями, имеющими каждый timestamp а также value колонны. Мне нужно разработать avg, или min, или sum, или другие агрегатные функции (в соответствии с файлом конфигурации) для записей, хранящихся каждый час (24 слота в день: 00-01, 01-02... 23-00). Каждая таблица начинается с разной отметки времени, может быть, десять лет назад или вчера, поэтому я должен рассмотреть возможность агрегирования записей, начиная с часа первой отметки времени. Предположим, что первая временная метка 14h:43m:20s, эта запись должна храниться в 14-15 слотах. Вопрос в том, как лучше всего рассчитать отметку времени, соответствующую 14:00 часов этой отметки? Затем я подумал, что можно перейти на один час, используя timedelta + 1h арифметика и делать то, что мне нужно. В любом случае, я приму любой совет, если это не лучший способ продолжить.

1 ответ

Ваш вопрос больше касается SQL, а не python. Вот как я получаю среднее (или другие агрегаты) через SQL.

select avg(EXTRACT(HOUR FROM <timestamp>)) as avg_hrs, 
min(EXTRACT(HOUR FROM <timestamp>)) as min_hrs, 
sum(EXTRACT(HOUR FROM <timestamp>)) as sum_hrs
from <table>;

Сумма не имеет смысла, но я оставляю ее вам полезной. Вот еще один запрос для подсчета. Надеюсь это поможет.

select EXTRACT(HOUR FROM <timestamp>) as hrs, count(*) as cnt
from <table>
group by EXTRACT(HOUR FROM <timestamp>)
order by 1;
Другие вопросы по тегам