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

SQLite日期列操作问题:筛选指定日期记录并去除时间

解决SQLite中筛选特定日期记录的问题

首先,咱们得搞清楚你原语句没生效的原因:你的date列存储的是字符串格式的日期时间(比如09-02-2015 19:50),而SQLite的strftime()函数需要接收它能识别的标准日期时间值(比如YYYY-MM-DD HH:MM或者时间戳)才能正确格式化。直接把DD-MM-YYYY HH:MM格式的字符串传进去,SQLite没法正确解析,所以匹配失败。

给你两种简单的解决方法:

方法1:直接截取日期部分字符串

因为你的日期字符串的前10位正好是DD-MM-YYYY格式的日期,直接截取这部分和目标日期比较就行,操作简单且高效:

SELECT * FROM tab WHERE substr(date, 1, 10) = '14-03-2015';

方法2:转换为标准日期格式后再比较

如果后续需要做更多日期相关的操作(比如日期加减、排序),可以先把字符串转换为SQLite能识别的YYYY-MM-DD格式,再用date()函数处理:

SELECT * FROM tab 
WHERE date(
    substr(date, 7, 4) || '-' || substr(date, 4, 2) || '-' || substr(date, 1, 2)
) = date('2015-03-14');

这里用substr()拆分原字符串的年、月、日部分,重组为YYYY-MM-DD的标准格式,再用date()函数统一处理后比较,兼容性更好。

另外,建议如果以后有机会的话,尽量把日期列存储为SQLite原生的DATETIME类型或者标准的YYYY-MM-DD HH:MM格式字符串,这样后续做日期操作会方便很多~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:25:13