Sqlite SELECT*适用于过去30天

Sqlite SELECT*适用于过去30天,sqlite,Sqlite,我有一个包含以下列的SQLite DB: 文件,创建日期,所有者 如何获取过去30天内创建的文件列表 我尝试了以下方法,但没有限制结果。该列表返回了2年前创建的文件 从创建日期的表1中选择*(选择日期时间('now','30天')) 另外,不确定这是否重要,但我创建的日期列是以下日期格式:dd/mm/yyyy hh:mm:ss类似的内容可能是您正在寻找的,这是我脑海中出现的,尚未测试过的内容 基本上,你会在创建日期前倒退30天 SELECT * FROM Table1 WHERE DATEDIF

我有一个包含以下列的SQLite DB:

文件,创建日期,所有者

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

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

从创建日期的表1中选择*(选择日期时间('now','30天'))


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

类似的内容可能是您正在寻找的,这是我脑海中出现的,尚未测试过的内容

基本上,你会在创建日期前倒退30天

SELECT * FROM Table1
WHERE DATEDIFF(DAY, DATEADD(DAY, -30, GETDATE()), Date_created) > 0
,所以比较将在文本上进行。如果您的记录是DD/MM/YYYY格式的,那么最终会出现类似于
“07/03/2020”>“2020-06-07”
的比较,这些比较毫无意义

如果选择将日期时间存储为文本,则必须使用可按字典顺序排序的格式。显示此属性的一个很好的标准格式(如果每个数据段都有相同的时区)是,例如,在我的时区中写入时的
2020-07-07 15:04:14+0300
。另外,建议采用ISO 8601

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

顺便说一句

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

足够了:)

将格式更改为YYYY-MM-DD hh:MM:ss.SQLite不支持DATEDIFF()、GETDATE()和DATEADD()函数。谢谢你,伙计,你说得对,我的日期是文本格式,所以我必须想办法重新修改格式。谢谢你的信息。所以,如果我更改了格式,SELECT查询就可以工作了?现在确认即可。谢谢你的帮助和洞察力。