选择python中的DateTime mysql查询

选择python中的DateTime mysql查询,python,sql,datetime,Python,Sql,Datetime,我有数据库 |id | teplota |创建于| |1 | 12.521 | 2017-02-01 17:49:53| |1 | 12.852 | 2017-02-02 17:50:53| |1 | 12.852 | 2017-02-03 17:50:53| 等等 created_at是我创建数据库时使用的时间戳 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 当我在DB中使用这个select命令时,它正常工作,我得到正确的输出 select *

我有数据库

|id | teplota |创建于|

|1 | 12.521 | 2017-02-01 17:49:53|

|1 | 12.852 | 2017-02-02 17:50:53|

|1 | 12.852 | 2017-02-03 17:50:53|

等等

created_at是我创建数据库时使用的时间戳

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
当我在DB中使用这个select命令时,它正常工作,我得到正确的输出

select * from ts2 where created_at >= "2017-02-01" and created_at < "2017-02-02"
从ts2中选择*在“2017-02-01”和“2017-02-02”创建
但是如果我想在python代码中使用它,我会遇到一个问题

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)) 
t1=datetime.datetime(2017,2,1)
t2=日期时间。日期时间(2017,2,2)
t1=str(t1)
t2=str(t2)
c、 执行(“从ts2中选择*,其中创建时间>=%s,创建时间<%s;”%(t1,t2))
我犯了一个错误

“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在'00:00:00'附近使用的正确语法,并在第1行的<2017-01-31 00:00:00'处创建了_”)

知道我做错了什么吗? 谢谢

尝试使用“中间”比较器,如下所示:

c.execute("SELECT * FROM ts2 WHERE created_at BETWEEN %s and %s" % (t1, t2))
它是为这种类型的查询创建的


否则我不知道为什么MySQL引擎会通过这个错误。也许可以尝试在日期占位符周围添加单引号?

尝试转换为iso格式:

t1 = datetime.datetime(2017, 2, 1)
t2 = datetime.datetime(2017, 2, 2)
t1 = str(t1.isoformat())
t2 = str(t2.isoformat())
c.execute("select * from ts2 where created_at >= %s and created_at < %s;" % (t1, t2)) 
isoformat
t1=datetime.datetime(2017,2,1)
t2=日期时间。日期时间(2017,2,2)
t1=str(t1.isoformat())
t2=str(t2.isoformat())
c、 执行(“从ts2中选择*,其中创建时间>=%s,创建时间<%s;”%(t1,t2))
等格式
t1=datetime.datetime(2017,2,1)
t2=日期时间。日期时间(2017,2,2)
t1=repr(str(t1))
t2=repr(str(t2))
c、 执行(“从ts2中选择*,其中创建时间>=%s,创建时间<%s;”%(t1,t2))

我遇到了同样的问题,并使用了“大约%s”来解决它:

sql_query = "select * from ts2 where created_at >= '%s' and created_at < '%s';" % (t1, t2)
c.execute(sql_query)
sql\u query=“从ts2中选择*,其中创建位置>='%s',创建位置<'%s'”%(t1,t2)
c、 执行(sql\U查询)

执行和发布前打印查询
sql_query = "select * from ts2 where created_at >= '%s' and created_at < '%s';" % (t1, t2)
c.execute(sql_query)