【发布时间】:2018-10-09 07:07:28
【问题描述】:
我在数据库中有记录:
record B with property `Checked` set to be current date in UTC.
record A with property `Checked` set to be current date in UTC - 48 hours.
然后我想创建查询以删除属性 Checked 超过 24 小时的行。
就我而言,只有A 应该被删除。 Checked 在数据库中存储为bigint。
db.Execute("DELETE FROM User WHERE Checked <= strftime('%s', datetime('now', '-1 day'))"); // A and B are not deleted
db.Execute("DELETE FROM User WHERE Checked <= datetime('now', '-1 day')"); // A and B are deleted
db.Execute("DELETE FROM User WHERE Date(checked) <= datetime('now', '-1 day')"); // A and B are not deleted
db.Execute("DELETE FROM User WHERE datetime(checked) <= datetime('now', '-1 day')"); // A and B are not deleted
你有什么想法吗?
【问题讨论】:
-
您的
Checked列将 bigint 值存储为 Unix 纪元时间?那么你应该使用datetime(Checked, 'unixepoch') -
非常仔细和彻底地阅读sqlite.org/datatype3.html 和sqlite.org/lang_datefunc.html。查看那些
datetime()表达式返回的内容,并查看您要比较的列中的内容。如果仍然不清楚,请重新阅读数据类型页面中的比较部分。
标签: sqlite sqlite-net sqlite-net-extensions