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)
任何帮助表示赞赏.谢谢
这应该看起来更像这样:
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上的更多信息.