【发布时间】:2015-10-23 09:36:45
【问题描述】:
我将日期存储为格式不太好的字符串 (dd-MM-yyyy)。 SQL 服务器无法自动将其转换为日期,至少不能使用上面的设置,但在一些帮助下它可以修复它。以下 SQL 语句完美运行:
select * from table
where convert(date,myValue,105) < GETDATE()
我的问题是,如何在 LINQ 中执行此操作?我手动尝试了不同的方法,并测试了 Linqer 以从我的 SQL 生成 LINQ。这是 Linqer 给我的:
from table in db.table
where
Convert.ToDateTime(myValue) < DateTime.Now
select new {
...
}
问题是,当我运行上面的语句时,我得到:
将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。
可能是因为它把 105 参数放到了 convert 方法中。我尝试了不同的解析方法(Parse、ParseExact 和 Convert.ToDateTime 与 IFormatProvider),但所有这些都给我或多或少的错误:
方法 'System.DateTime ParseExact(System.String, System.String, System.IFormatProvider)' 不支持 SQL 转换。
所以我的问题是,有没有一种好方法可以在 Linq 中使用“奇数”日期格式转换日期,以便我可以使用 T-SQL?我已经有了一个“有效”的解决方案,但我想知道是否有任何方法可以让 Linq 以一种好的方式来解释它?
【问题讨论】:
标签: c# sql linq linq-to-sql