Oracle 中 日期格式的问题 返回
SqlSugar
老数据
7
1050

悬赏:5 飞吻
在orm中查询条件带有日期时,输出的sql语句无法在oracle中执行,报
ORA-01843: 无效的月份
但是orm中有查询结果。
热忱回答(7)
-
fate sta VIP0
2021/12/25提供具体用例
0 回复 -
BrainK VIP0
2021/12/25@fate sta:
var dbTime = DateTime.Parse("2021-12-20 09:03:19"); var query1 = BaseDal.Db.Queryable<TestEntity>().Any(it => it.UpdateTime == dbTime); // true var query2 = BaseDal.Db.Queryable<TestEntity>().Where(it => it.UpdateTime == dbTime).ToList(); // query2.count = 1
输出的sql
SELECT * FROM (SELECT 1,ROW_NUMBER() OVER(ORDER BY sysdate ) AS RowIndex FROM "TEST" WHERE ( "UPDATE_TIME" = '2021/12/20 9:03:19' )) T WHERE RowIndex BETWEEN 1 AND 1 SELECT * FROM "TEST" WHERE ( "UPDATE_TIME" = '2021/12/20 9:03:19' )
ORA-01843: 无效的月份
0 回复 -
BrainK VIP0
2021/12/25@fate sta:
var datelist =new List<DateTime> { DateTime.Parse("2021-12-20 09:03:19"), DateTime.Parse("2021-12-20 09:03:19"), DateTime.Parse("2021-12-20 09:03:19") }; var query = BaseDal.Db.Queryable<TestEntity>().Any(it => datelist.Contains(it.UpdateTime)); // ORA-01843: 无效的月份
无结果
SQL
SELECT * FROM (SELECT 1,ROW_NUMBER() OVER(ORDER BY sysdate ) AS RowIndex FROM "TEST" WHERE ("UPDATE_TIME" IN ('2021/12/20 9:03:19','2021/12/20 9:03:19','2021/12/20 9:03:19')) ) T WHERE RowIndex BETWEEN 1 AND 1
0 回复 -
fate sta VIP0
2021/12/25SqlFunc.ContainsArrayUseSqlParameters 用这个函数
0 回复 -
BrainK VIP0
2021/12/25@fate sta:请问上面的那个是什么情况?
为何输出的sql无法执行但是实际上查到呢?
0 回复 -
fate sta VIP0
2021/12/25@BrainK:应该是服务器的时间格字段不匹配,改用参数化就没这些问题
0 回复 -
fate sta VIP0
2021/12/25像时间这种IN最好参数化 ,字符串很保证精度
0 回复