我有以下在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()
为什么这个查询在我直接运行时有效,但在我的代码执行时失败了?
答案 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
。也许那是你问题的根源?