oracle Entity db.Database.SqlQuery ORA-01843: 无效的月份

时间:2023-12-22 23:03:26

原因是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'");

然后执行正常的语句即可。