Возврат дат в pyodbc с помощью команды cursor.execute select - PullRequest
0 голосов
/ 09 января 2012

Я пытаюсь использовать pyodbc для возврата дат, соответствующих определенным критериям, из базы данных Oracle.Например, я хочу получить все даты в период с 1 января 2010 года по 1 января 2011 года. Для этого я делаю следующее:

x = cursor.execute ("" "выберите столбец из таблицы, гдеOutputDate> '2010/01/01' и OutputDate <'2011/01/01' "" "</p>

Нечто подобное работало, когда я использовал базу данных Access, но теперь выдает эту ошибку:

pyodbc.DataError: ('22007', '[22007] [Microsoft] [драйвер ODBC для Oracle] [Oracle] ORA-01861: литерал не соответствует строке формата (1861) (SQLExecDirectW)')

Я работаю в Windows 7, и драйвер, который я использую, - это Microsoft ODBC для Oracle (что, как мне кажется, очевидно из ошибки)

Означает ли, что «литерал не соответствует строке формата», значит я могу »не можете использовать <и> с датами в этой базе данных? Кто-нибудь может мне помочь?

Большое спасибо, Алекс

1 Ответ

1 голос
/ 10 января 2012

Литерал не соответствует строке формата означает, что вы пытаетесь сравнить дату и строку.Измените свой запрос на следующий, и он должен работать.

select column
  from table 
 where outputdate between to_date('2010/01/01','yyyy/mm/dd') 
       and to_date('2011/01/01','yyyy/mm/dd')

Если, конечно, outputdate не дата, в этом случае лучше перенести это в дату, чтобы ваши сравнения работали.

Обратите внимание на оператор between, который вы можете использовать в этой ситуации.

Здесь приведен список типов данных Oracle здесь ;сайт хорош для всего.

Я должен добавить, что я очень предпочитаю cx_Oracle для связи с Oracle из python;хотя это просто личное предпочтение.

...