0

bcp 関数 (bcp_sendrow/bind など) を使用して datetime 列を持つテーブルに挿入しようとすると、「無効な時刻形式」という問題が発生します。たとえば、Google の例に従って、DBDATETIME 構造体にデータを入力しました。たとえば、2009 年 8 月 3 日、現地時間の午前 8 時ちょうどにデータを入力したい場合は、次のように構造体のメンバーを入力します。

dtdays=40026 (19000101 からの num 日) および dttime = 28800000 (午前 0 時からの num ミリ秒)

(また、変数をSQLDATETIMEとしてバインドしました)dttimeが7桁(またはそれ以下)の場合、bcpは成功します(ただし、明らかに間違った時間値で(日付部分は問題ありません))

どうすればこれを整理できますか?datetime2 /time などを試しましたが、何も役に立ちませんでした。助けてください、すべてのアドバイス/アイデアは大歓迎です。(私は Sql サーバー 2008 と (ODBC) SQL ネイティブ クライアント 10.0 を使用しています)

ありがとう!

4

1 に答える 1

0

気にしないでください..最終的に(一種の)-DBDATETIME :: dttime(1日の始まりからのミリ秒数)を3.333333で除算する必要があります。そうすれば、時間を表す最も近い値になります。(フィールド幅はわずか7桁の幅です)。これはおそらく、日時タイプが3分の1秒しか表現できないことと関係があります。正確に....とにかく、ODBC bcp apiでdatetime2を使用しようとしましたが、時間の部分を機能させることができませんでした。誰かがより良い方法を見つけたら教えてください。

于 2009-08-05T08:22:29.510 に答える