我在SQLite3数据库上执行以下简单查询:
SELECT AField,AnotherField FROM ATable WHERE AnIntField>strftime('%s');
这样可以正常工作并返回预期的结果。
如果我执行略微修改的查询:
SELECT AField,AnotherField FROM ATable WHERE AnIntField+86400>strftime('%s');
然后我没有得到任何结果!这没有任何意义!我试过在AnIntField+86400
周围加上括号,但这没有用。是的,AnIntField
的值远大于strftime('%s')
,因此不会返回不同的结果。
这种行为有什么理由吗?
答案 0 :(得分:2)
这是一个完全猜测,但是如果你将AnIntField + 86400包装在与演员相当的SQLite3中会发生什么?
在TSQL中你会做这样的事情:
WHERE CAST(AnIntField + 86400 AS int) > strftime('%s')
我的想法是AnIntField + val作为附加而不是添加而出现。
实际上,如果强制转换不起作用,请尝试将选择更改为
SELECT AnIntField+86400 FROM ...
看看它吐出来的东西。