如何比较sqlite3中的日期?

时间:2012-11-29 08:45:51

标签: sqlite

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

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

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

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