我想从firefox数据库places.sqlite中选择今天访问过的网址。
作为第一次尝试,我用来完成此操作的查询是(请参阅运算符>
):
SELECT datetime(moz_places.last_visit_date/1000000,'unixepoch'), moz_places.title
FROM moz_places
WHERE moz_places.last_visit_date/1000000>strftime('%s','now','start of day')
ORDER BY moz_places.last_visit_date DESC;
这个问题的答案是什么。
然后我将查询更改为此,这几乎相同(请参阅运算符-
和>
):
SELECT datetime(moz_places.last_visit_date/1000000,'unixepoch'), moz_places.title
FROM moz_places
WHERE moz_places.last_visit_date/1000000-strftime('%s','now','start of day')>0
ORDER BY moz_places.last_visit_date DESC;
然后答案是正确的。
有没有人知道为什么>
在一个查询中起作用而在另一个查询中不起作用?
答案 0 :(得分:0)
strftime()
函数始终返回一个字符串,字符串总是比一个数字大。
当您尝试使用带加法/减法的字符串时,它会自动转换为数字,因此last_visit_date-strftime(...)
的结果是一个数字。
您可以将原始查询中的函数调用更改为:
CAST(strftime('%s', ...) AS NUMBER)
或者,不太明显,如果你想保存输入:
strftime('%s', ...)+0