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
相关产品推荐
相关产品推荐

