SQLite 日期时间与 ISO8601 中“现在”的比较

Shi*_*iri 3 sqlite datetime date

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

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

SELECT * FROM mydb WHERE date > datetime('now')
Run Code Online (Sandbox Code Playgroud)

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

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

CL.*_*CL. 5

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

SELECT * FROM MyTable WHERE datetime(date) > datetime('now');
Run Code Online (Sandbox Code Playgroud)

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

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