如何在Python的SQLite3中从datetime列筛选唯一日期?
解决SQL查询返回重复日期的问题
问题说明
数据库日期字段包含时间部分,需要获取仅含日期、无重复的结果,期望格式:[('2023-07-28',), ('2023-07-29',), ...]
当前执行的语句:
CURSOR.execute(f"SELECT strftime('%Y-%m-%d', date) FROM {name}_schedule WHERE strftime('%Y-%m-%d', date) >= DATE('now') LIMIT(6) OFFSET({count})")
返回结果存在重复日期:[('2023-07-28',), ('2023-07-28',), ('2023-07-28',), ('2023-07-29',), ('2023-07-29',), ('2023-07-29',)]
解决方法
在SELECT后添加DISTINCT关键字过滤重复值,修改后的语句:
CURSOR.execute(f"SELECT DISTINCT strftime('%Y-%m-%d', date) FROM {name}_schedule WHERE strftime('%Y-%m-%d', date) >= DATE('now') LIMIT(6) OFFSET({count})")
原因解释
原语句仅将带时间的日期格式化为纯日期,但未对结果去重,同一个日期下的多条记录会被逐一返回,导致重复值。DISTINCT关键字会让SQL返回唯一的结果集,自动剔除重复的日期条目。
内容的提问来源于stack exchange,提问作者PR. OR
相关产品推荐
相关产品推荐

