SQL Server Char/VarChar日期时间错误



有人能告诉我为什么这个代码会产生错误吗?

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函数来执行此操作。

最新更新