2017-02-04 4 views
0

У меня есть база данныхВыберите DateTime mysql query в python

| id | теплота | created_at |

| 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 

, когда я использую эту команду выбора в БД нормально работает и я правильный вывод

select * from ts2 where created_at >= "2017-02-01" and created_at < "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)) 

i get error

«У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования около '00: 00: 00 и created_at < 2017-01-31 00:00:00 по строке 1 ")

Любая идея, что я может делать неправильно Спасибо

+0

печать запроса перед выполнением и пост –

ответ

0

Попробуйте использовать «МЕЖДУ» компаратор, как так:.

c.execute("SELECT * FROM ts2 WHERE created_at BETWEEN %s and %s" % (t1, t2)) 

Он был создан для этого типа запроса

в противном случае я не знаю, почему MySQL двигатель может пройти через эту ошибку. Возможно, попробуйте объявление одинарные кавычки вокруг заполнителей даты?

0

Try Преобразование в формат 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 
Смежные вопросы