0

WCF サービスと Windows アプリケーションがあり、両方とも異なるタイム ゾーンにあります。現在、この Windows アプリケーションは、WCF サービスを介してデータを保存および取得しています。

データ型が datetime の logtime の列を持つテーブルに対して一括挿入を行うと、このローカルの datetime をデータベースに保存できますが、このテーブルを取得しようとすると、logtime 列のすべての値が間違っています。

SOで同様の質問がたくさん見つかりましたが、参照しているテーブルには5〜10秒ごとに更新され続ける1000のレコードが含まれているため、UTC時間を実装できません。

WCF サービスによって行われるこの自動日時変換を停止する方法はありますか。

ガイドしてください。

4

1 に答える 1

1

これはどういう意味ですか: 「logtime 列のすべての間違った値を示します」。時刻はデータベース サーバーのローカル時刻ですか? そして、それはあなたが望むものではありませんか?

logtime 列をクライアント マシンのタイム ゾーンにしたいと想定しています。そうですか?また、指定されていないため、SQL Server 内で GetDate() の既定値を使用して logtime 列を設定していると想定しています。また、指定されていないため、SQL Server を使用していると想定しています。

クライアントのタイム ゾーンを使用する場合は、いくつかのオプションがあります。

  1. データベース サーバーのタイム ゾーンをクライアント マシンと同じタイム ゾーンに変更します。
  2. 時刻をパラメーターとして WCF サービスに渡します。(WCF サービスは、データベース サーバーと同じタイム ゾーンのサーバーで実行されていると想定しています。)
  3. そのままにしておきますが、データを取得するときに適切なタイム ゾーンに変換します。

他にもいくつかのオプションがあるかもしれませんが、私が行った仮定を明確にしていただけると助かります。

「WCF サービスによって行われる自動日時変換」とはどういう意味ですか? 時刻にローカル タイム ゾーンを使用していますか? もしそうなら、それ自体を決定するのではなく、時間を受け入れるようにする必要があります。おそらく、いくつかのコードを表示する必要があります。それは役に立ちます。

于 2012-04-29T13:54:19.623 に答える