选择python中的DateTime mysql查询
我有数据库 |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是我创建数据库时使用的时间戳选择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 *
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)