8

pymssql を使用してデータタイム オブジェクトを挿入するにはどうすればよいですか? SQL Server テーブルが datetime オブジェクトを予期していることはわかっています。たとえば、位置 3 で考えてみましょう。これらの 3 つすべてを試しました。

cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', datetime.datetime.now())")
cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', 20130410)")
cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', '20130410')")
cursor.execute("INSERT INTO MyTable VALUES(1, 'Having Trouble', GETDATE())")

毎回同じエラーが発生します。

OperationalError: (241, 'Conversion failed when converting date and/or time from character string.DB-Lib error message 241, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')

そこにある小さなドキュメントを精査し、繰り返し検索しました。

編集:二次的な問題はフィールド長の問題でした。受け入れられた回答の最初のコメントを参照してください。

4

4 に答える 4

6

日付としてフォーマットされていない文字列 (datetime.datetime.now(), 20130410, '20130410', GETDATE()) を挿入しようとしているため、SQL サーバーはそれから日付を解析できません...

だからこれを試してください...

cursor.execute("
    INSERT INTO MyTable
    VALUES(
        1,
        'Having Trouble',
        '" + str(datetime.datetime.now()) + "'
    )
")
于 2013-04-10T21:05:38.267 に答える
3

これを試してください:

timeStamp = str(datetime.datetime.now())[0:-3]

このタイム スタンプ形式は MS SQL SERVER で変換でき、pymssql で使用して datetime 型のオブジェクトを挿入できます。

于 2014-03-10T19:46:52.350 に答える
0

この同じ問題に直面している他の人にとって、私の問題は異なっていました。

私の年は 0014 として解析されていました。2014年と解釈されていると思いました。何が起こっているのか理解するのに少し時間がかかりました。

pymssql の出番は、smalldate 型が 0014 を年として認識せず、変換を行うことができなかったことです。

于 2014-08-08T21:47:50.583 に答える