有一个表包含包含unix时间戳的字段,我试图获取超过一小时的记录
select * from table_name where (date('now','unixepoch') - table_field) > 3600
但是这根本没有显示任何记录,但是字段,其中包含几天前的时间戳记。如果有一些简单的条件,如table_field > 1
,它会输出所有记录。但为什么顶部的陈述不起作用?
答案 0 :(得分:1)
'unixepoch'
修饰符从Unix时间戳编号转换为date
函数可理解的格式。
但是,您希望将日期字符串转换为Unix时间戳:
SELECT *
FROM table_name
WHERE strftime('%s', 'now') - field > 3600
您也可以使用modifier而不是计算秒数(但没有减法,strftime
返回的字符串不会自动转换为数字):
SELECT *
FROM table_name
WHERE CAST(strftime('%s', 'now', '-1 hours') AS INT) > field