2012-09-07 66 views
0

我应该如何在我的C#查询中使用c#datetime值?如何在SQL查询中使用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精简版,在我的例子中,日期字段有8精度设置(日期,时间除外吧?)。这是否意味着我最终以00:00:00.000完成了整个日期?如何在不包含时间的情况下将日期时间值传递给数据库,而不必先转换为字符串?

+0

究竟是什么错误你好吗试试? –

回答

2

你可以只是my_time.Date

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

这就是我所需要的 - 我自己最喜欢的方式,但谢谢。 :) – Anonymous

0

不要将它作为字符串传递,否则会遇到文化格式化的麻烦。

请尝试使用SqlDateTime代替。

0

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

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