Вот что я подозреваю:
strftime('%m', ...)
возвращает двухсимвольные строки как '01'
, '02'
, ... '08'
, '09'
, ... '12'
. Ваш ORM берет эти строки и преобразует их в целые числа для хранения в этом классе TempHolder
. Какой бы подпрограмме преобразования она ни пользовалась, она смотрит на ведущий символ '0'
, присутствующий в 9 строках, решает, что это означает, что это восьмеричные константы с основанием 8, и выполняет соответствующее преобразование. 08
и 09
, конечно, являются недопустимыми восьмеричными числами, но вместо вызова исключения код конвертации обрабатывает их как 0.
Держу пари, если вы измените свой запрос на
@Query("""SELECT cast(strftime('%m', timestamp / 1000, 'unixepoch') as integer) as month,
COUNT(*) as count
FROM ${EventLog.TABLE_NAME}
GROUP BY month""")
вы получите ожидаемые результаты.