sqlite3 выборка данных на основе времени эпохи - PullRequest
0 голосов
/ 08 сентября 2018

Я новичок в sqlite3, и я создал базу данных sqlite3 с именем result, в которой есть _time-таблица, в которой перечислены IP-адреса на основе времени, которое я запрашивал из Splunk. Я пытаюсь извлечь данные из таблицы _time (время эпохи) из моей базы данных sqlite3.

Вот копия _time и IP-адресов, перечисленных в базе данных sqlite3:

1535139799|2002:8672:5ebf::8672:5ebf
1535139799|2002:8672:5ebf::8672:5ebf
1535131073|2002:8672:ba8a::8672:ba8a
1535131058|2002:8672:ba8a::8672:ba8a
1535131058|2002:8672:ba8a::8672:ba8a
1535131413|2002:8672:5ebf::8672:5ebf
1535131413|2002:8672:5ebf::8672:5ebf
1535120613|2002:8672:5ebf::8672:5ebf
1531944594|41.212.170.179
1531944594|38.108.250.243

Проблема в том, что независимо от того, какие команды я пробовал, он всегда выводит ВСЕ IP-адреса. Мне просто нужны IP-адреса от x количество дней (30 дней назад). Я посмотрел онлайн и следовал многим примерам, но все еще безуспешно. Я также посмотрел на документацию . Я пробовал:

SELECT * FROM result WHERE _time < (DATE('now', '-5 day'));
SELECT * FROM result WHERE _time > (DATE('now', '-5 days')); 
SELECT * FROM result WHERE _time > (SELECT DATE('now', '-7 day')) 

Я изменил количество «дней», но команды по-прежнему выбирают все перечисленные IP-адреса. Мне просто нужно получить IP-адреса с x дней назад (10 дней назад или 30 дней назад). Я предполагаю, что sqlite3 не может прочитать время эпохи в моих таблицах?

Я застрял в этой проблеме на несколько дней. Я буду продолжать искать решение, я ценю любые отзывы!

1 Ответ

0 голосов
/ 09 сентября 2018

По сути, вы должны преобразовать одну из сторон аргумента сравнения в тот же тип, что и другой аргумент.

Вы можете преобразовать либо скорректированный сейчас (правый аргумент) в секундах, используя: -

srtftime('%s','now',your_adjustment) or you could adjust the  

Или вы можете преобразовать столбец _time в дату (гггг-мм-дд), используя

date(_time,'unixepoch')

Используяпервый пример, тогда это может быть: -

SELECT * FROM result WHERE _time < strftime('%s','now', '-5 day');

или это может быть: -

SELECT * FROM result WHERE date(_time,'unixepoch') < date('now', '-5 day');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...