截断的日期时间值不正确

时间:2012-09-09 20:26:41

标签: python mysql django

我有以下在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()

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

1 个答案:

答案 0 :(得分:0)

两个查询之间的区别:

首先:

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

Django代码:

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

其中一个有%k,另一个有%H。也许那是你问题的根源?