具有字符串格式的DateTime建议

时间:2013-04-08 14:10:33

标签: c# sql entity-framework datetime

我正在进行查询,比较SQL Server中的两个DateTime值。 SQL Server中DateTime的格式为:

 2010-09-20 00:00:00.000

我正在使用Entity Framework,让我告诉你我现在面临的问题。

当我在实体框架中比较DateTime值时,该属性必须与数据库相同,这意味着必须为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);

但现在该值变为字符串,这意味着我无法将该值与实体框架进行比较:

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

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

2 个答案:

答案 0 :(得分: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);

您可以查看here以获取更多自定义格式。

答案 1 :(得分:0)

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

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