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