带DATE参数的Oracle存储过程的执行会损失小时/分钟

本文关键字:小时 损失 分钟 存储过程 DATE 参数 Oracle 执行 | 更新日期: 2023-09-27 18:07:32

我有一个使用DATE作为输入的简单存储过程:

CREATE OR REPLACE PROCEDURE delete_time(myTime DATE) IS
BEGIN
DELETE FROM mytable WHERE time = myTime;
END;
/

这已经通过函数导入添加到我的EDMX中,映射的类型是SSDL端的Date和CSDL端的DateTime。

问题是当我使用DateTime从。net运行过程时,小时和分钟在途中丢失了:

DateTime dt = new DateTime(2013, 4, 3, 12, 15, 00);
var timeParam = new ObjectParameter("myTime", dt) : 
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("DeleteTime", timeParam);

这将运行存储过程,但是删除TIME = 03-APR-2013 00:00:00而不是03-APR-2013 12:15:00的行

是否有一些错误在Oracle客户端(我使用11.2.0.3.20)?还是我上面做错了什么?

我也尝试使用TIMESTAMP作为我的过程的输入类型,但后来我得到这个错误时调用函数:ORA-01830:日期格式图片在转换整个输入字符串之前结束

任何想法?

带DATE参数的Oracle存储过程的执行会损失小时/分钟

我尝试使用实体框架执行Oracle过程时遇到了这个问题。所以我像这样传递一个Date参数:

var objects = _dbContext.Database.SqlQuery<MyObject>("BEGIN My_procedure(to_date('01/01/2016', 'dd/mm/yyyy  hh24:mi:ss')); END;").ToList();