SQLite 日期时间与 ISO8601 中的 'now' 的比较

标签 sqlite date datetime

我根据 ISO8601 格式以 YYYY-mm-ddTHH:MM:SS 格式存储日期时间信息。但是,如果存储日期晚于当前日期时间,我想从我的 SQLite 数据库中获取信息。

这是我正在尝试实现的示例:

SELECT * FROM mydb WHERE date > datetime('now')

问题是 SQLite 函数 datetime('now') 以与上述相同的格式返回日期,但没有 'T' 文字,因此呈现 ISO8601 格式的存储日期时间值与 datetime('现在')。

有什么方法可以在不更改数据库值的情况下进行这种比较?

最佳答案

您可以将数据库值转换成相同的格式:

SELECT * FROM MyTable WHERE datetime(date) > datetime('now');

但是,最好将比较值转换为数据库格式(直接访问列值可以使用索引):

SELECT * FROM MyTable WHERE date > strftime('%Y-%m-%dT%H:%M:%S', 'now');

关于SQLite 日期时间与 ISO8601 中的 'now' 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33128312/

相关文章:

sqlite - 何时关闭 SQLite 数据库(使用 FMDB)

linux - 获取特定日期戳后进入 UNIX 文件夹的文件数

swift - 快速获取日期名称和日期在日期范围内重复的次数

python - 月份范围计算未返回预期结果

java - 如何在android sqlite数据库中插入和检索捕获图像

SQLite NOT IN 查询很慢

ruby-on-rails - 重命名Users表中的列时,获取:SQLite3::ConstraintException:FOREIGN KEY约束失败:DROP TABLE“users”

javascript - JS Date 函数在 Safari 中不起作用

javascript - 如何获取两个 Date.now() 之间的时差(以小时为单位)?

ruby-on-rails - Rails 时间戳与 mysql 时间戳不同