0

pyodbc を使用して、Oracle データベースから特定の基準に一致する日付を返そうとしています。たとえば、2010 年 1 月 1 日から 2011 年 1 月 1 日までのすべての日付を取得したいとします。これを行うには、次のようにします。

x = cursor.execute("""OutputDate > '2010/01/01' および OutputDate < '2011/01/01' であるテーブルから列を選択"""

Access データベースを使用していたときに同様のことが機能しましたが、次のエラーが表示されます。

pyodbc.DataError: ('22007', '[22007] [Microsoft][Oracle 用 ODBC ドライバー][Oracle]ORA-01861: リテラルがフォーマット文字列と一致しません (1861) (SQLExecDirectW)')

私は Windows 7 を使用しており、使用しているドライバーは Microsoft ODBC for Oracle です (エラーから明らかだと思います)。

「リテラルがフォーマット文字列と一致しません」というのは、このデータベースでは日付に < と > を使用できないということですか? 誰でも私を助けることができますか?

どうもありがとう、アレックス

4

1 に答える 1

1

Literal does not match format stringは、日付と文字列を比較しようとしていることを意味します。クエリを次のように変更すると、機能するはずです。

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私は、Python から Oracle と通信する方がずっと好きだということを付け加えておきます。それは単なる個人的な好みです。

于 2012-01-09T20:16:36.187 に答える