1

我正在做一个比较DateTimeSQL Server 中的两个值的查询。DateTimeSQL server 中的格式是这样的:

 2010-09-20 00:00:00.000

我正在使用实体框架,让我告诉你我现在面临的问题。

当我DateTime在 Entity Framework 中比较一个值时,该属性必须与数据库相同,这意味着必须是DateTime. 日期来自一个帖子,这意味着它是一个字符串。这里的问题是,如何将它们转换为DateTime与数据库中相同的格式?

用户的输入以字符串的形式出现,我所做的是:

DateTime start_date = Convert.ToDateTime(postValueHere);

但值并不如预期:

2010/20/46 12:00:00 am

所以,我给它一个格式:

string format = "yyyy-MM-dd 00:00:00.000";
string date = start_date .ToString(format);

但是现在该值变成了一个字符串,这意味着我无法将该值与 Entity Framework 进行比较:

db.Product.Where(x=>x.START_DATE== date)//error, cannot compare datetime with string.

如何将用户的输入转换为与 SQL Server 中相同的格式,然后再转换为DateTime

4

2 回答 2

2

您可以尝试使用DateTime.TryParseExact()作为:

 DateTime start_date;
 DateTime.TryParseExact(strDate, "yyyy-MM-dd hh:mm:ss tt",
                        System.Globalization.CultureInfo.InvariantCulture,
                        System.Globalization.DateTimeStyles.None, out start_date);
 Console.WriteLine(start_date);

您可以在此处查看更多自定义格式。

于 2013-04-08T14:16:21.273 回答
0

如果您使用 EF 从数据库中获取该日期值,则它应该以 DateTime 类型的属性结束。这个值只是一个 DateTime 结构,没有任何格式
当您检查帖子中的解析日期时,调试器.ToString()会在值上使用 a 来获取它可以显示的字符串。它仍然是一个没有任何格式的 DateTime 结构!

所以只需比较 DateTime 值,而不用担心格式。

于 2013-04-08T14:18:31.657 回答