0

いくつかの TIMESTAMP WITH TIME ZONE フィールドを含むデータベース テーブルがあります。このテーブルからレコードを選択し、データセットに入れます。日付/時刻フィールドにアクセスしようとすると、タイム ゾーン情報が失われたようです。adapter.Fill() の前に以下を追加してみました:

adapter.ReturnProviderSpecificTypes = true;

ただし、これにより、日付/時刻フィールドだけでなく、すべてのフィールドで Oracle データ型が使用されます。たとえば、Convert.ToInt32(dr["SomeIntField"]) は OracleDecimal になったため、できなくなりました。他のすべてのフィールドを台無しにすることなく、タイム ゾーン情報をテーブルからデータセットに取得する方法はありますか?

4

1 に答える 1

0

ReturnProviderSpecificTypes を次のものに置き換えました。

adapter.SafeMapping.Add("*", typeof(string));
adapter.Fill(ds);

これにより、データが文字列型に変換されます (オプションは sting と byte[] のみです)。次を使用してアクセスできるタイムゾーン形式を保持しているようです:

dtzTime = new OracleTimeStampTZ(dr["MY_DBTable_Column_with_TZ"].ToString());

日付を USA/EASTERN、USA/PACIFIC などのタイム ゾーンで保存しているため、上記の戻り値: 26-FEB-2013 14:49:46.169030000 US/MOUNTAIN

于 2013-02-27T21:58:48.330 に答える