原因是oracle的日期格式化格式和本地语言环境的日期格式不一致导致的。
一般情景为oralce格式为英文格式
本地服务器或者开发机的环境为中文环境。
使用Dbcontext 实例一般不会有问题。
但是使用db.Database.SqlQuery会引起这个错误。
解决办法
1.改变客户端机器语言环境,使其格式化日期格式跟oracle服务器的一样
2.在执行本来的sql之前,先执行一个设置语句
alter session set nls_date_language='american'
db.Database.ExecuteSqlCommand("alter session set nls_date_language = 'american'");
然后执行正常的语句即可。