从SQLite数据库中删除记录,其中datetime包含来自变量的日期

svdrlsy4  于 2022-12-13  发布在  SQLite
关注(0)|答案(1)|浏览(164)

我想使用一个变量中的日期(例如2022-11 - 10)来删除每个带有日期时间(例如2022-11- 10 T??????????)的记录。例如:

last_Date = datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')

并像这样使用SQL:

cursor.execute("""
DELETE FROM alpaca_stock_prices_4H WHERE datetime = (?)
""", (last_Date))
yb3bgrhw

yb3bgrhw1#

变量last_Date的值的格式为YYYY-MM-DD日期字符串,但表中的列datetime包含格式为YYYY-MM-DDT??????????的时间戳,因此无法将它们与=运算符进行比较。
使用SQLite的strftime()date()函数将datetime也格式化为YYYY-MM-DD

cursor.execute("""
DELETE FROM alpaca_stock_prices_4H WHERE strftime('%Y-%m-%d', datetime) = ?
""", (last_Date,))

或:

cursor.execute("""
DELETE FROM alpaca_stock_prices_4H WHERE date(datetime) = ?
""", (last_Date,))

如果您实际上想要删除昨天的所有行,则可以不传递参数,只使用SQL代码来完成:

cursor.execute("""
DELETE FROM alpaca_stock_prices_4H WHERE date(datetime) = date('now', '-1 day'))
""")

相关问题