Краткая версия: Когда я пытаюсь использовать функцию DatePart в Access через ODBC, она не может быть решена.
Более длинная версия:
У меня есть запрос Microsoft Access, который возвращает строки с отметкой времени и счетом.Я хочу отсортировать его по день , а затем по баллу - по сути, таблицу рекордов за день.
Чтобы получить лучшую функцию, я использовал функцию DatePart
для извлечениякаждый из Года, Месяца и Дня из отметки времени, а затем ORDER BY
, за которыми следует Оценка.
В Microsoft Access запрос работает прекрасно.
Однако, когда я использую pyodbc
чтобы получить доступ к тому же запросу, драйвер ODBC ставится в тупик функцией DatePart и считает, что это имя отсутствующего параметра.
Меня поразило то, что даже если я спрятал функцию DatePart, создав новуюЗапрос HighScore, а затем SELECT * FROM HighScore
, он все еще пожаловался, что не может найти параметр.Очевидно, что SQL-запрос запроса разрешается довольно поздно в процессе.
Мой вопрос:
- Как разрешить функцию DatePart в SQL, чтобы разрешить Access запускать ее?или
- Как правильно отсортировать по дневной части временную метку по ODBC?
Добавлена дополнительная информация:
Похоже, излишнее, но вот код:
import pyodbc
access_db_path = r"<ellided>"
connection_string = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+access_db_path
connection = pyodbc.connect(connection_string, autocommit = True)
print "First query"
connection.cursor().execute('SELECT ScoreTime FROM SplitExtendedP1')
print "Worked"
print "Second query"
print connection.cursor().execute('SELECT DatePart("yyyy",ScoreTime) FROM SplitExtendedP1')
print "Doesn't get here."
Вот результаты:
First query
Worked
Second query
Traceback (most recent call last):
File "<ellided>.py", line 16, in <module>
print connection.cursor().execute('SELECT DatePart("yyyy", ScoreTime) FROM SplitExtendedP1')
pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')