0

我有以下在 SQLyog 中运行的查询

SELECT * FROM mytable WHERE created > UNIX_TIMESTAMP(STR_TO_DATE('2012-09-09 00:00:00-05:00','%Y-%m-%d %k:%i:%s') - INTERVAL 1 DAY);

如果我在 Python 或 Django 中运行相同的查询,我会收到以下消息:

Warning: Truncated incorrect datetime value: '2012-09-09 00:00:00-05:00'

我已经从 python 打印出查询以确保它与上面的相同。它是相同的(包括结尾的分号)。我怀疑它的时区偏移有问题,但我不知道为什么它会在 SQLyog 中工作。

打印的查询是:

--------------------------------------------------
SELECT * FROM sb_bans WHERE created > UNIX_TIMESTAMP(STR_TO_DATE('2012-09-09 00:00:00-05:00','%Y-%m-%d %H:%i:%s') - INTERVAL 1 DAY);
--------------------------------------------------

用于运行此查询的 Django 代码是:

query = """SELECT * FROM sb_bans WHERE created > UNIX_TIMESTAMP(STR_TO_DATE('2012-09-09 00:00:00-05:00','%Y-%m-%d %H:%i:%s') - INTERVAL 1 DAY);"""
myCursor = connections[system_db].cursor()
results = myCursor.execute(query)    # Dies on this statement
resultcount = results.fetchall()

为什么这个查询在我直接运行时有效,但在我的代码执行时却失败了?

4

1 回答 1

0

您的两个查询之间存在差异:

第一的:

STR_TO_DATE('2012-09-09 00:00:00-05:00','%Y-%m-%d %k:%i:%s')

姜戈代码:

STR_TO_DATE('2012-09-09 00:00:00-05:00','%Y-%m-%d %H:%i:%s')

一个有一个%k,另一个有一个%H。也许这就是你问题的根源?

于 2012-09-09T20:30:32.433 回答