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

如何在SQLite3中删除日份为26的日期数据?

解决步骤

你原来的代码有几个关键问题:

  • SQL里判断相等用单=,不是==
  • 你要找的是所有日份为26的记录,不是等于某个特定日期值,得用日期函数提取日期里的“日”部分

先别着急删,先跑查询确认目标记录,避免误删:

第一步:查询所有日份为26的记录

根据你使用的数据库类型,选择对应语句:

如果你用的是SQLite(比如Python自带的sqlite3)

CURSOR.execute(f"SELECT * FROM {name}_schedule WHERE strftime('%d', date) = '26'")
# 打印结果确认是否是你要删的记录
records = CURSOR.fetchall()
print(records)

strftime('%d', date)是从date字段提取两位日份(比如'26'),再判断是否等于目标值。

如果你用的是MySQL

CURSOR.execute(f"SELECT * FROM {name}_schedule WHERE DAY(date) = 26")
records = CURSOR.fetchall()
print(records)

DAY(date)会直接返回日期里的日份数字(比如26)。

如果你用的是PostgreSQL

CURSOR.execute(f"SELECT * FROM {name}_schedule WHERE EXTRACT(DAY FROM date) = 26")
# 也可以用DAY函数:CURSOR.execute(f"SELECT * FROM {name}_schedule WHERE DAY(date) = 26")
records = CURSOR.fetchall()
print(records)

第二步:确认无误后执行删除

把上面的SELECT *改成DELETE即可,注意:删除后无法恢复,一定要先备份数据库或确认查询结果正确!

SQLite删除语句

CURSOR.execute(f"DELETE FROM {name}_schedule WHERE strftime('%d', date) = '26'")
# 记得提交事务(sqlite3需要这一步)
CONNECTION.commit()

MySQL删除语句

CURSOR.execute(f"DELETE FROM {name}_schedule WHERE DAY(date) = 26")
CONNECTION.commit()

PostgreSQL删除语句

CURSOR.execute(f"DELETE FROM {name}_schedule WHERE EXTRACT(DAY FROM date) = 26")
CONNECTION.commit()

如果你的date字段不是标准日期类型(比如是字符串格式的'20240526'),可以用字符串截取的方式匹配,比如SQLite里用SUBSTR(date, 7, 2) = '26',你可以补充字段格式再调整语句。

内容的提问来源于stack exchange,提问作者PR. OR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:27:09