Я просто пытался запросить базу данных SQLServer
в определенном диапазоне дат. Почему-то я просто не могу понять это сам. Вот что я сделал:Диапазон дат запроса SQL в python
import pyodbc
import pandas as pd
con = pyodbc.connect("Driver={SQL Server}; Server=link")
tab = pd.read_sql_query("SELECT * FROM OPENQUERY(aaa, 'SELECT * FROM bbb.ccc WHERE number like (''K12345%'')')",con)
tab['DT']
0 2015-09-17 08:51:41
1 2015-09-17 09:14:09
2 2015-09-17 09:15:03
3 2015-09-24 15:20:55
4 2015-09-24 15:23:47
5 2015-10-02 08:49:59
6 2015-10-30 14:08:40
7 2015-10-30 14:13:38
8 2015-11-03 14:30:06
9 2015-11-03 14:30:22
10 2015-11-04 07:14:40
11 2015-11-04 10:43:51
Name: DT, dtype: datetime64[ns]
Теперь я думал, что я должен быть в состоянии выбрать записи о датах между 2015-09-18
и 2015-10-02
с помощью следующего запроса. Как-то он ошибся с ошибкой
DatabaseError: Execution failed on sql: SELECT * FROM OPENQUERY(aaa, 'SELECT * FROM bbb.ccc WHERE DT between ''2015-09-18'' and ''2015-10-02''')".
Может кто-нибудь помочь объяснить, что я сделал не так?
tab2 = pd.read_sql_query("SELECT * FROM OPENQUERY(aaa, 'SELECT * FROM bbb.ccc `WHERE DT between ''2015-09-18'' and ''2015-10-02''')",con)`
Немного больше исследований найдено аналогичный вопрос здесь: [link] (http://stackoverflow.com/questions/32699299/using-openquery-with-an-oracle-database-to-query-a-date-range) , Просто нужно преобразовать формат даты. Следующий код работает для меня сейчас: tab2 = pd.read_sql_query ("SELECT * FROM OPENQUERY (aaa, 'SELECT * FROM bbb.ccc" WHERE DT между to_date (' '18-Sep-2015' ') и to_date (' '02 -Oct-2015 '') ') ", con)' – lignin