我正在传递'2012-09-10 00:00:00-05:00'
给 MySQL 查询。该值是使用 Python 的pytz 模块检索的。
import pytz
class MyClass():
def __init____(self):
self.tz = pytz.timezone(settings.TIME_ZONE)
todaystart = self.tz.localize(datetime.now(self.tz).replace(hour=0, minute=0, second=0, microsecond=0, tzinfo=None), is_dst=None).astimezone(self.tz)
MySQL 查询是这样的,之后todaystart
被替换为:
SELECT * FROM mytable WHERE created > UNIX_TIMESTAMP(STR_TO_DATE('2012-09-10 00:00:00-05:00','%Y-%m-%d %k:%i:%s') - INTERVAL 1 DAY);
如果我直接执行此查询,它会按预期返回数据。如果我将此查询放入代码中,则会出现此错误:Warning: Truncated incorrect datetime value: '2012-09-09 00:00:00-05:00'
我正在使用的代码是这样的(在 Django 中):
query = """SELECT * FROM mytable WHERE created > UNIX_TIMESTAMP(STR_TO_DATE('2012-09-10 00:00:00-05:00','%Y-%m-%d %k:%i:%s') - INTERVAL 1 DAY);"""
myCursor = connections[system_db].cursor()
results = myCursor.execute(query) # Dies on this statement
resultcount = results.fetchall()
我在 MySQL 文档中没有看到str_to_date的偏移格式字符串。我希望保留该偏移量,因为数据是为第 3 方系统返回的,并且通过将其保留在适当的位置,我不必在该返回和使用返回日期执行查询之间执行任何逻辑。但是,我认为它与偏移量无关,因为如果我直接运行它,它就可以工作。
Warning
当 Python 对 MySQL 运行查询时,我做错了什么会导致出现这种情况?