ODP.net 截断时间戳毫秒数
ODP.net Truncating Timestamp Milliseconds
我正在使用 ODP.net 从 Oracle 获取一些数据,在一个特定的数据集中,我正在获取时间戳类型的字段。无论我最后做什么,无论是将其转换为 DateTime 还是将其转换为字符串,它总是会截断毫秒数。
这是从我的存储过程返回的示例:
10/28/2016 4:05:53.873 下午
这就是我将它映射到我的模型时的样子,无论 属性 是 DateTime 还是字符串:
2016 年 10 月 28 日 4:05:53 下午
这是我的过程调用的样子:
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Schema.Package.someProcedure";
cmd.Parameters.Add(new OracleParameter("P_1", OracleDbType.Int32, ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("P_output", OracleDbType.RefCursor, ParameterDirection.Output));
cmd.Parameters["P_1"].Value = someVar;
using (OracleDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
myObjList.Add(
new myObject
{
prop1 = Convert.ToString(dr["ID_1"]),
prop2 = Convert.ToString(dr["ID_2"]),
dtProp = Convert.ToDateTime(dr["TIME_STAMP1"]),
stringProp = Convert.ToString(dr["TIME_STAMP2"])
});
}
}
最终目标是将这个对象列表序列化为 JSON,DateTime 属性 提出了另一个问题,因为它以这种格式序列化:
\/Date(1477685153873)\/
因此,如果可能的话,我想将 Oracle 时间戳转换为字符串,同时保留毫秒数。我是 ODP.net 的新手,所以我在访问返回数据的方式上是否遗漏了什么?
我让它工作了,但它不漂亮或难以维护。我不得不使用 myTimeStampProp = Convert.ToString(dr.GetOracleTimeStamp(29))
而不是按名称引用该列。就像我说的,没有列名就不太容易维护,但它确实有效。
我正在使用 ODP.net 从 Oracle 获取一些数据,在一个特定的数据集中,我正在获取时间戳类型的字段。无论我最后做什么,无论是将其转换为 DateTime 还是将其转换为字符串,它总是会截断毫秒数。
这是从我的存储过程返回的示例:
10/28/2016 4:05:53.873 下午
这就是我将它映射到我的模型时的样子,无论 属性 是 DateTime 还是字符串:
2016 年 10 月 28 日 4:05:53 下午
这是我的过程调用的样子:
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Schema.Package.someProcedure";
cmd.Parameters.Add(new OracleParameter("P_1", OracleDbType.Int32, ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("P_output", OracleDbType.RefCursor, ParameterDirection.Output));
cmd.Parameters["P_1"].Value = someVar;
using (OracleDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
myObjList.Add(
new myObject
{
prop1 = Convert.ToString(dr["ID_1"]),
prop2 = Convert.ToString(dr["ID_2"]),
dtProp = Convert.ToDateTime(dr["TIME_STAMP1"]),
stringProp = Convert.ToString(dr["TIME_STAMP2"])
});
}
}
最终目标是将这个对象列表序列化为 JSON,DateTime 属性 提出了另一个问题,因为它以这种格式序列化:
\/Date(1477685153873)\/
因此,如果可能的话,我想将 Oracle 时间戳转换为字符串,同时保留毫秒数。我是 ODP.net 的新手,所以我在访问返回数据的方式上是否遗漏了什么?
我让它工作了,但它不漂亮或难以维护。我不得不使用 myTimeStampProp = Convert.ToString(dr.GetOracleTimeStamp(29))
而不是按名称引用该列。就像我说的,没有列名就不太容易维护,但它确实有效。