SQL Server Char/VarChar DateTime错误

rof*_*s91 -6 c# sql sql-server

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

C#代码

DateTime now = DateTime.Now;
DateTime after1month = DateTime.Now.AddMonths(1);
Run Code Online (Sandbox Code Playgroud)

它产生的查询

SELECT * FROM TABLE WHERE THEDATE BETWEEN 'now' AND 'after1month' 
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.谢谢

Mic*_*aga 6

这应该看起来更像这样:

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);
Run Code Online (Sandbox Code Playgroud)

有时您可以使用查询直接在SQL Server端执行此操作:

SELECT * FROM TABLE WHERE THEDATE BETWEEN getdate() AND dateadd(mm, 1, getdate())
Run Code Online (Sandbox Code Playgroud)

没有来自.NET的参数.

添加(评论后):

dateadd 是一个SQL Server函数,允许添加到目前为止的specyfic间隔并返回它.

在这种情况下,dateadd(mm, 1, getdate())将one(1)month(mm)添加到当前datetime(getdate()).有关datepart标识符和函数本身在MSDN dateadd上的更多信息.