Mysql 从使用历元时间的SQlite中选择最后24小时
我试图从SQlite数据库中选择过去24小时的所有数据。有一列“Date”,其中有日期,并且是纪元时间。我尝试了各种不同的命令,但到目前为止,我似乎已经做到了: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/
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');