1

有一个包含unix时间戳字段的表,我试图获取超过一小时的记录

select * from table_name where (date('now','unixepoch') - table_field) > 3600

但这根本不显示任何记录,但有些字段包含几天前的时间戳。如果有一些简单的条件,比如table_field > 1它确实会输出所有记录。但是为什么顶部的语句不起作用?

4

1 回答 1

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
于 2012-11-29T12:14:16.153 回答