gpt4 book ai didi

c# - Linq-To-Sql 将字符串转换为具有特定格式的日期

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:47 27 4
gpt4 key购买 nike

我有一个日期以不太好的格式 (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 参数丢给了转换方法。我尝试了不同的解析方法(Parse、ParseExact 和 Convert.ToDateTime 以及 IFormatProvider),但所有这些都会给我或多或少类似的错误:

方法“System.DateTime ParseExact(System.String, System.String, System.IFormatProvider)”没有支持的 SQL 转换。

所以我的问题是,是否有一种好方法可以在 Linq 中转换具有“奇数”日期格式的日期,以便我可以使用 T-SQL?我已经有了一个“有效”的解决方案,但我想知道是否有任何方法可以让 Linq 以一种很好的方式解释它?

最佳答案

虽然这不是最佳实践,但如果可行,那就接受吧,我建议您在表中创建一个 View

  CREATE VIEW view_table 
AS
select tbl_id,
convert(date,myValue,105) as myDate
from table

那么从你的 linq

     from table in db.view_table
where
Convert.ToDateTime(myDate) < DateTime.Now
select new {
...
}

因为列 myValue 已经转换为 105 格式。

关于c# - Linq-To-Sql 将字符串转换为具有特定格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com