我的MySQL数据库中有以下表:
| 标识符|特普洛塔|创建时间|
| - -|- -|- -|
| 一个|十二点五二一分|2017年2月1日17:49:53|
| 一个|十二点八五二分|2017年2月2日17:50:53|
| 一个|十二点八五二分|2017年2月3日17:50:53|
| 一个人。|一个人。|一个人。|
列created_at
具有类型timestamp,下面是我的CREATE TABLE
语句中的列定义:
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
当我在DB中使用这个select命令时,它正常工作,并且我得到了正确的输出
select * from ts2 where created_at >= "2017-02-01" and created_at < "2017-02-02"
但是如果我想在我的python代码中使用它,我会遇到一个问题:
import datetime
t1 = datetime.datetime(2017, 2, 1)
t2 = datetime.datetime(2017, 2, 2)
t1 = str(t1)
t2 = str(t2)
c.execute("select * from ts2 where created_at >= %s and created_at < %s;" % (t1, t2))
出现以下错误:
您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,了解在第1行“00:00:00 and created_at〈2017-01-31 00:00:00”附近使用的正确语法
你知道我做错了什么吗?谢谢
5条答案
按热度按时间3zwtqj6y1#
我遇到了同样的问题,并使用“around %s”解决了该问题:
jv4diomz2#
尝试使用“BETWEEN”比较器,如下所示:
它是为这种类型的查询而创建的。
否则,我不知道为什么MySQL引擎会通过这个错误。也许尝试添加单引号周围的日期占位符?
xvw2m8pv3#
您错过了%s上的“”
应该是
c.execute("select * from ts2 where created_at >= '%s' and created_at < '%s';" % (t1, t2))
qxsslcnc4#
尝试转换为iso格式:
xkftehaa5#