我正在尝试在过去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
有什么想法吗?
答案 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',则十进制值不起作用)。因此,如果您的纪元时间是秒,则忽略上述解决方案的强制转换和分割部分。希望这可以帮助!