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());

我用美国/东部、美国/太平洋等时区存储我的日期,所以以上返回:26-FEB-2013 14:49:46.169030000 US/MOUNTAIN

于 2013-02-27T21:58:48.330 回答