sqlite - 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 没有本机日期时间数据类型,因此比较将在文本上进行。如果您的记录是 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')
足够 :)
推荐阅读
- c# - 从 C# 写入的 BGScript GATT 特征不起作用
- python - python:如何绘制以下函数的折线图?
- reactjs - validateDOMNesting(...): 不能作为子级出现问题
- github-actions - GitHub Actions:CodeQL 分析结果
- pandas - 在 CPU 环境中使用 Pytorch GPU 张量加载腌制数据帧
- laravel - Laravel 8 - 目标类 [KontakteController] 不存在,但 ->namespace($this->namespace) 已设置
- pandas - 如何检查第 1 列项目是否存在于第 2 列中的任何位置
- android - Android Kotlin:应用程序未读取通过 USB 连接的设备
- python - 如何在 google colab 上从 OpenAI 运行 Glow?
- kotlin - 如何在 Kotlin 中从服务器异步下载?