0

我应该如何在我的 C# 查询中使用 c# 日期时间值?

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

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.000 结束了完整的日期?如何在不包括时间的情况下将日期时间值传递给数据库,而不先转换为字符串?

4

3 回答 3

2

你可以试试my_time.Date

cmd.Parameters.AddWithValue("@date", my_time.Date);
于 2012-09-07T10:12:40.387 回答
0

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

尝试SqlDateTime改用。

于 2012-09-07T10:10:13.770 回答
0

您没有将日期转换为字符串 - AddWithValue 知道它是日期,但它是 a datetime,因此它具有时间组件。你的销售有时间因素吗?

 SELECT * FROM sales WHERE DateDiff(d, @date, date) = 0
于 2012-09-07T10:11:18.680 回答