首页 > 解决方案 > Sqlite SELECT * 过去 30 天

问题描述

我有一个包含以下列的 SQLite 数据库:

文件、创建日期、所有者

如何获取过去 30 天内创建的文件列表?

我尝试了以下,但它并没有限制结果。该列表返回了 2 年前创建的文件!

SELECT * FROM Table1 WHERE Date_created > (SELECT DATETIME('now', '-30 day'))

另外,不确定是否重要,但我的 Created_date 列采用以下日期格式:dd/mm/yyyy hh:mm:ss

标签: sqlite

解决方案


SQLite 没有本机日期时间数据类型,因此比较将在文本上进行。如果您的记录是 DD/MM/YYYY 格式,那么您最终会得到类似这样的比较"07/03/2020" > "2020-06-07",这毫无意义。

如果您选择将日期时间存储为文本,则必须使用按字典顺序排列的格式。展示此属性的一个很好的标准格式(如果每条数据都具有相同的时区,无论如何)是ISO 8601,例如2020-07-07 15:04:14+0300在我的时区写作时。顺便说一句,即使 xkcd 也推荐 ISO 8601。

如果您选择将日期时间存储为数字,则可以将它们存储为UNIX time,或者如果您喜欢冒险,可以存储为 number 20200707150414。如果这对您的应用程序很重要,请记住这些数字选项都不存储时区信息。

作为旁白,

SELECT * FROM Table1 WHERE Date_created > DATETIME('now', '-30 day')

足够 :)


推荐阅读