从使用EPOCH时间的SQlite中选择最后24小时

时间:2017-05-01 22:00:30

标签: mysql sql unix sqlite

我正在尝试在过去24小时内从SQlite数据库中选择所有数据。有一个列'日期',其中存在日期,这是在EPOCH时间。我尝试了各种不同的命令,但这似乎是我到目前为止所做的:

SELECT * 
FROM Log
WHERE UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -1 DAY))

SELECT * FROM Log WHERE Date >= datetime('now', ' '-24 hours');

这似乎不起作用。最终,我正在尝试将此数据库的最后24小时转换为Unix中的CSV,并且在过去的24小时内只使用以下内容:

sqlite3 -header -csv /opt/demo/log_20170501131627.db " select * from Log 
WHERE Date >= datetime('now', ' '-24 hours');" > /opt/demo/DB.csv

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

SELECT * FROM Log WHERE Date >= strftime('%s', 'now', '-1 day');

你可以在这里试试:

http://sqlfiddle.com/#!5/440d5/2/0

编辑:基于“CL.”的简化strftime使用情况 - 以下评论(谢谢)

答案 1 :(得分:2)

我不确定你的纪元时间的准确性。如果您将纪元时间保存到毫秒,您可以这样做:

SELECT * FROM Log WHERE CAST((DATE/1000) AS LONG) >= strftime('%s', 'now', '-1 day');

上面的除以1000只是将其转换为秒,然后将其转换为长(如果您使用'%s',则十进制值不起作用)。因此,如果您的纪元时间是,则忽略上述解决方案的强制转换和分割部分。希望这可以帮助!