将日期值返回DateTime

时间:2015-11-04 22:42:04

标签: c# oracle datetime

创建插入语句后,我想知道两个值,即最后插入的id和日期。

这是我的插入声明

cmd.CommandText = "INSERT INTO message (user_id, category_id, media) " +
    "VALUES (:user_id, :category_id, :media)" +
    "RETURNING id, TO_DATE(TO_CHAR(creation_date, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') INTO :last_insert_id, :last_creation_date";

参数

cmd.Parameters.Add(new OracleParameter()
{
    ParameterName = ":last_creation_date",
    OracleDbType = OracleDbType.Date,
    Direction = ParameterDirection.Output
});

当我尝试获取日期时,只有年,月,日返回00:00:00 ......

DateTime.Parse(cmd.Parameters[":last_creation_date"].Value.ToString())

我如何从价值中获得完整的日期时间?

1 个答案:

答案 0 :(得分:0)

有几件事:

  • 查看OracleDbType的文档。您正在使用OracleDbType.Date,它映射到Oracle DATE类型 - 这只是一个日期。您应该使用OracleDbType.TimeStamp,或者与您正在使用的列匹配的任何类型。

  • Mitch在问题评论中是正确的。你对字符串的转换太多了。在绝大多数情况下,您不应使用字符串来表示数据库中的日期或时间,也不应使用与数据库通信的客户端代码。您的SQL应该简单地改为:

    RETURNING id, creation_date INTO :last_insert_id, :last_creation_date
    

    同样,您的.NET代码应类似于:

    DateTime dt = (DateTime) cmd.Parameters[":last_creation_date"].Value;