如何将DateTime与SQL查询一起使用?

时间:2012-09-07 10:04:39

标签: c# sql datetime sql-server-ce

我应该如何在C#查询中使用c#datetime值?

到目前为止,我一直在做以下事情:

Datetime my_time = new DateTime(2012, 09, 05);
cmd.Parameters.AddWithValue("@date", my_time);
cmd.CommandText = "SELECT * FROM sales WHERE date = @date";

直到今天早上一直工作正常,当我从结果集中检索值时出现空错误。

我更改了我的日期参数,以便从我的日期时间值中获取短日期字符串,如下所示:

cmd.Parameters.AddWithValue("@date", my_time.ToShortDateString());

它似乎再次正常工作。

这样做的正确方法是什么? 显然我正在将我的日期时间值转换为字符串,只是(大概)数据库将其转换回在评估我的相等where子句之前的日期时间,这似乎有点无意义。

编辑:

我正在使用SQL Server Compact Edition,我的示例中的日期字段的精度设置为8(日期,不包括时间吗?)。这是否意味着我在00:00:00之前通过了完整日期?如何在不包含时间的情况下将日期时间值传递给数据库,而不首先转换为字符串?

3 个答案:

答案 0 :(得分:2)

您可以尝试使用my_time.Date

cmd.Parameters.AddWithValue("@date", my_time.Date);

答案 1 :(得分:0)

不要将其作为字符串传递,否则会出现文化格式的问题。

请尝试使用SqlDateTime

答案 2 :(得分:0)

您没有将日期转换为字符串 - AddWithValue知道它是一个日期,但它是datetime,所以它有一个时间组件。您的销售是否有时间组件?

 SELECT * FROM sales WHERE DateDiff(d, @date, date) = 0