【发布时间】:2012-11-13 10:57:47
【问题描述】:
我正在尝试使用 linq 生成要在 Oracle11g 中使用的 sql 语句。
使用日期时出现问题:
C#代码:
DateTime convertedMinStartDateForEvent = Convert.ToDateTime(minStartDateForEvent);
DateTime convertedMinEndDateForEvent = Convert.ToDateTime(minEndDateForEvent);
var query = (from myTableRec in uow.myTable
where myTableRec.startdate >= convertedMinStartDateForEvent && myTableRec.endDate < convertedMinEndDateForEvent
linq生成的SQL给出
SELECT *
FROM <table>
WHERE start_date > '24/11/2012 00:00:00' and end_date < '28/11/2012 00:00:00'
这会导致 oracle 错误:ORA-01830 - 日期格式图片在转换整个输入字符串之前结束
在查询中添加 TO_DATE 可修复 ORA-01830,因为它将字符串转换为 oracle 日期,同时现在知道日期格式。
SELECT *
FROM <table>
WHERE start_date > TO_DATE('24/11/2012 00:00:00','DD/MM/YYYY HH24:MI:SS') and end_date < TO_DATE('28/11/2012 00:00:00','DD/MM/YYYY HH24:MI:SS')
那么,有没有办法将 TO_DATE 添加到 LINQ(对于 oracle)? 如果没有,请告诉我如何解决此问题。
谢谢
【问题讨论】:
-
您是否为 Oracle 使用了 EntityFramework 提供程序?或者你用的是什么 linq?
-
@KirillBestemyanov 我正在使用 Mindscape Lightspeed ORM 谢谢
-
@user1079925,
'24/11/2012 00:00:00'来自哪里?它来自DateTime变量吗?还是string?能否也提供 C# 代码? -
@Cade - 按要求添加 C# 代码
-
@user1079925:您必须向 Mindscape 提交错误。问题出在他们的 LINQ 查询提供程序中。