gpt4 book ai didi

c# - Linq 查询和日期格式的问题

转载 作者:太空狗 更新时间:2023-10-30 00:58:19 25 4
gpt4 key购买 nike

我有一个使用 Visual Studio 2008 编写的 C# 控制台应用程序。

我的系统文化是 en-GB。我有一个如下所示的 Linq 查询:

var myDate = "19-May-2010";

var cus = from x in _dataContext.testTable
where x.CreateDate == Convert.ToDateTime(myDate)
select x;

生成的 SQL 查询会生成错误,因为它将日期返回为“19/05/2010”,它会将其解释为不正确的日期。出于某种原因,即使我的系统文化设置为 en-GB,它看起来也试图将其解释为 en-US 日期。

我有什么办法解决这个问题吗?

编辑:感谢您对魔术字符串和 var 滥用的评论,但这不是我的问题。我的问题是,在从 Linq 到 SQL 的转换中,日期被解释为美国格式日期(19/05/2010 被解释为:19 月 5 日和 2010 年)导致以下错误:

System.Data.SqlClient.SqlException: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

生成的 SQL 查询的 where 子句如下所示:

WHERE ([t0].[CreateDate] = '19/05/2010 00:00:00') 

请注意,完全相同的 Linq 查询在 LinqPad 中完美运行。

我尝试了以下 where 子句:

where x.CreateDate == DateTime.Today

仍然出现错误。

附加信息:

SQL Server 查询可视化工具:

SELECT [t0].[field1], [t0].[field2], [t0].[field3] AS [field4], [t0].[field5]
FROM [dbo].[table] AS [t0]
WHERE ([t0].[CreateDateTime] = '19/05/2010 00:00:00')

Original query:
SELECT [t0].[field1], [t0].[field2], [t0].[field3] AS [field4], [t0].[field5]
FROM [dbo].[table] AS [t0]
WHERE ([t0].[CreateDateTime] = @p0)
-------------------------------
@p0 [DateTime]: 19/05/2010 00:00:00

LINQPad:

-- Region Parameters
DECLARE @p0 DateTime SET @p0 = '2010-05-19 00:00:00.000'
-- EndRegion
SELECT [t0].[field1], [t0].[field2], [t0].[field3] AS [field4], [t0].[field5]
FROM [table] AS [t0]
WHERE ([t0].[CreateDateTime] = @p0)

在上面我注意到 LinqPad 以不同的格式向 VS 显示日期。

谢谢。

艾伦·T

最佳答案

不要将本地字符串发送到数据库并要求数据库将这些字符串转换为日期时间。只是不要。

最初:

var myDate = "19-May-2010"; 

var cus = from x in _dataContext.testTable
where x.CreateDate == Convert.ToDateTime(myDate)
select x;
  • 不要滥用变量。
  • 将您打算在数据库中发生的操作与您打算在本地发生的操作分开

所以...

string myInput = "19-May-2010";
DateTime myDate = Convert.ToDateTime(myInput);

IQueryable<TestTable> cus =
from x in _dataContext.testTable
where x.CreateDate == myDate
select x;

响应更新。

  • 您的应用似乎发送了格式正确的日期时间,但它使用的连接需要格式错误的日期时间。
  • 您可以更改每个连接,也可以更改登录的默认值:http://support.microsoft.com/kb/173907

关于c# - Linq 查询和日期格式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3055035/

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