sqlite3根据纪元时间获取数据

问题描述 投票:1回答:1

我是sqlite3的新手,我创建了一个名为result的sqlite3数据库,该数据库具有_time表,根据我从Splunk查询的纪元时间列出IP地址。我试图从我的sqlite3数据库中获取基于_time(纪元时间)表的数据。

这是sqlite3数据库中列出的_time和IP地址的副本:

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地址。我只需要x天(30天前)的IP地址。我看了online,并举了很多例子,但仍然没有成功。我也看过documentation。我试过了:

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地址。我只需要从x天前(10天前或30天前)获取IP地址。我假设sqlite3无法在我的表中读取纪元时间?

我好几天都陷入了这个问题。我将继续寻找解决方案,感谢任何反馈!

python python-3.x sqlite epoch splunk
1个回答
1
投票

基本上你必须将比较参数的一个边转换为与另一个参数相同的类型。

您可以使用以下方法将调整后的现在(右手参数)转换为秒数: -

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

或者您可以使用将_time列转换为日期(yyyy-mm-dd)格式

date(_time,'unixepoch')

使用你的第一个例子,这可能是: -

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

或者可能是: -

SELECT * FROM result WHERE date(_time,'unixepoch') < date('now', '-5 day');
© www.soinside.com 2019 - 2024. All rights reserved.