5

我正在尝试从 Oracle 数据库中读取 Date 类型的记录,然后将其转换为 ASP.NET c# DateTime 对象。问题是,它选择了日期而不是时间。我正在使用的命令是:

DateTime dt = Convert.ToDateTime(ds.Tables[0].Rows[0][0].ToString());

如果我尝试打印,ds.Tables[0].Rows[0][0].ToString()那么它也会显示时间。有谁知道如何解决这个问题?

我的 oracle 日期字段的值/格式为:2013-01-01 14:14:14

4

5 回答 5

5

其他人都把它复杂化了。

Oracle Managed Data Access(我假设您正在使用)将日期返回为“OracleDate”类型。OracleDate 有一个属性“Value”,即 ac# DateTime。

就我而言,要从 out 参数(下面的 p2)获取 DateTime,我使用了

return ((OracleDate) p2.Value).Value;

对于 Op 的情况,其中相关日期位于返回数据集的一行中,请使用

DateTime dt = (DateTime) ds.Tables[0].Rows[0][0];

编辑:如果从 DataRow 获取数据,由于某种原因,日期实际上是 ac# DateTime

于 2018-04-16T14:26:09.780 回答
2

这:

DateTime dateTime = DateTime.ParseExact(ds.Tables[0].Rows[0][0].ToString(), "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

使用指定的格式进行解析,不依赖于线程文化。

于 2013-05-16T19:59:16.120 回答
2

你有什么理由不能使用DateTime.Parse()?接受数据库值似乎给出了正确的输出(包括时间,这似乎是你所追求的)

在此处输入图像描述

于 2013-05-16T20:08:01.433 回答
0
DateTime dt = ds.Tables[0].AsEnumerable().First().Field<DateTime>(0);

应该做的工作

于 2013-05-16T19:52:37.373 回答
0

DateTime dt = DateTime.Parse(dataSet.Tables[0].Rows[0]["mydate"].ToString());

我尝试成功。

于 2020-06-11T01:06:19.113 回答