You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中如何用行内日期与datetime('now')筛选今日之前的记录

解决SQLite查询今日之前使用记录的问题

问题原因

你的date字段是TEXT类型,datetime('now')返回的是包含时分秒的完整时间字符串(例如2024-05-20 14:30:00),如果date字段存储的是仅日期格式(例如2024-05-20),直接做字符串比较会出现逻辑偏差——字符串逐字符对比规则下,短格式日期和带时分秒的日期无法准确匹配需求逻辑。

正确查询方式

根据「获取所有今日之前的使用记录」(即日期早于今天,不含今日)的需求,可采用以下方法:

方法1:统一转为纯日期格式比较

将date字段和当前时间都转换为仅含日期的格式后再对比:

SELECT * FROM Use WHERE date(date) < date('now');
  • date('now')返回当前纯日期(例如2024-05-20),不含时分秒
  • date(date)把TEXT类型的date字段转为标准日期格式,确保对比逻辑准确

方法2:若需包含今日记录

如果需求是「今日及之前的所有记录」,只需将运算符改为<=:

SELECT * FROM Use WHERE date(date) <= date('now');

特殊格式适配

如果date字段存储的是非标准日期格式(比如MM/DD/YYYY),需要先转换为标准格式再对比:

-- 适配MM/DD/YYYY格式的date字段
SELECT * FROM Use WHERE date(strftime('%Y-%m-%d', date, '%m/%d/%Y')) < date('now');

内容的提问来源于stack exchange,提问作者LeoColman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:45:33