Mysql 从使用历元时间的SQlite中选择最后24小时

Mysql 从使用历元时间的SQlite中选择最后24小时,mysql,sql,unix,sqlite,Mysql,Sql,Unix,Sqlite,我试图从SQlite数据库中选择过去24小时的所有数据。有一列“Date”,其中有日期,并且是纪元时间。我尝试了各种不同的命令,但到目前为止,我似乎已经做到了: SELECT * FROM Log WHERE UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -1 DAY)) 及 这似乎不起作用。最后,我尝试在Unix中将此数据库的最后24小时转换为CSV,并使用以下方法仅将最后24小时转换为CSV: sqlite3 -header -csv /opt/demo/

我试图从SQlite数据库中选择过去24小时的所有数据。有一列“Date”,其中有日期,并且是纪元时间。我尝试了各种不同的命令,但到目前为止,我似乎已经做到了:

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

这似乎不起作用。最后,我尝试在Unix中将此数据库的最后24小时转换为CSV,并使用以下方法仅将最后24小时转换为CSV:

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

SELECT * FROM Log WHERE Date >= strftime('%s', 'now', '-1 day');
您可以在这里尝试:


编辑:简化的strftime用法基于下面的“-s注释(谢谢)

我不确定您的epoch时间的精度。如果要将历元时间保存到毫秒,可以这样做:

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

上面的除以1000只是将其转换为秒,然后将其转换为长(如果使用“%s”,则十进制值无效)。因此,如果你的纪元时间是以秒为单位的,只需忽略上述解决方案中的施法和除法部分。希望这有帮助

不客气。不要忘记接受你认为最好的答案。你不需要单独的
datetime()
call;全部接受修饰符。
SELECT * FROM Log WHERE CAST((DATE/1000) AS LONG) >= strftime('%s', 'now', '-1 day');