【发布时间】:2012-03-05 16:27:12
【问题描述】:
我有一个简单的查询,我想把当前日期放在哪里
var query = @"
SELECT trainid, trainnum
FROM trains
WHERE CONVERT(varchar(10), trainstartdate, 104)=" +
" " +
// so that matches the '104' format
String.Format("{0:dd.MM.YYYY}", DateTime.Now) +
" " +
"ORDER BY trainnum";
但在运行时我收到错误消息:
Cannot call methods on numeric. .Net SqlClient Data Provider
如何正确指定当前日期? 谢谢!
使用 GETDATE()
效果:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
使用 {0:dd.MM.yyyy}
效果:none
使用 CONVERT(varchar(20), GetDate(), 104)
效果:that works!
谢谢!
【问题讨论】:
-
你应该使用 SqlParameters 和 SqlDbType.DateTime 来代替。
-
我的回答有什么问题?我只是想知道变得更好。
-
@dknaack 看看我的编辑 (
Using GETDATE)。就我而言,如果我只使用普通的GetDate()调用,那么我会收到错误消息。相反,GETDATE()的结果应转换为格式“104”。 -
@helicera 请查看我的更新答案并比较性能。
标签: c# sql sql-server-2008 datetime