有人能告诉我为什么这个代码会产生错误吗?
C#代码
DateTime now = DateTime.Now;
DateTime after1month = DateTime.Now.AddMonths(1);
它生成的查询
SELECT * FROM TABLE WHERE THEDATE BETWEEN 'now' AND 'after1month'
感谢您的帮助。Thx
这应该更像这样:
DateTime now = DateTime.Now;
DateTime after1month = DateTime.Now.AddMonths(1);
SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE WHERE THEDATE BETWEEN @now AND @after1month", connection);
cmd.Parameters.Add(new SqlParameter("@now", System.Data.SqlDbType.DateTime).Value = now);
cmd.Parameters.Add(new SqlParameter("@after1month", System.Data.SqlDbType.DateTime).Value = after1month);
有时您可以直接在SQL Server端使用查询:来执行此操作
SELECT * FROM TABLE WHERE THEDATE BETWEEN getdate() AND dateadd(mm, 1, getdate())
没有来自.NET.的参数
添加(评论后):
dateadd
是一个SQL Server函数,它允许向日期添加特定的间隔并返回它
在这种情况下,dateadd(mm, 1, getdate())
将一个(1
)月(mm
)添加到当前日期时间(getdate()
)。有关日期部分标识符和函数本身的更多信息,请访问MSDN日期添加。
如果您不想使用ADO,则使用直接SQL查询作为
SELECT * FROM TABLE WHERE THEDATE BETWEEN GETDATE() AND DATEADD(mm, 1, GETDATE())
这里DATEADD函数将使用"mm"参数在当前月份中添加一个月。
我认为'now'和'after1month'是您在查询中使用的变量。这些变量的数据类型是什么?您需要将其强制转换为datetime类型。使用SQL server的Convert或Cast函数来执行此操作。