Sqlite SELECT * 表示过去 30 天



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

文件、Date_created、所有者

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

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

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

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

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

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

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

顺便说一句,

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

就够:)

像这样的东西可能是你正在寻找的,它是我脑海中出现的东西,还没有测试过。

基本上,你倒退了30天Date_created。

SELECT * FROM Table1
WHERE DATEDIFF(DAY, DATEADD(DAY, -30, GETDATE()), Date_created) > 0

最新更新