Azure数据库的DATEADD函数

时间:2014-05-05 11:06:22

标签: c# sql sql-server azure

我正在开发一个连接到Azure数据库的Web应用程序。我试图使用DATEADD函数,但我收到一个错误。

我的代码:

SqlCommand commandAvg = new SqlCommand("SELECT AVG (" + statDataSelection + ") FROM Buoy3v3 WHERE time >'" + TextBox1_fromDate.Text + "' AND time <'" + TextBox2_toDate.Text + "';", connection);
commandAvg.CommandType = CommandType.Text;

SqlCommand commandAvg1month = new SqlCommand("SELECT AVG (" + statDataSelection + ") FROM Buoy3v3 WHERE time > (DATEADD(month, 1,'" + TextBox1_fromDate.Text + "')) AND time < (DATEADD(month, 1,'" + TextBox2_toDate + "')) ;", connection);
commandAvg1month.CommandType = CommandType.Text;

string Avgresult = commandAvg.ExecuteScalar().ToString();
string Avgresult1month = commandAvg1month.ExecuteScalar().ToString();

Avgresult变量工作正常,但我收到Avgresult1month变量的错误,所以我假设我的问题是DATEADD函数,但我无法弄清楚是什么问题。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您编码:

SqlCommand commandAvg1month = new SqlCommand("SELECT AVG (" + statDataSelection + ") FROM Buoy3v3 WHERE time > (DATEADD(month, 1,'" + TextBox1_fromDate.Text + "')) AND time < (DATEADD(month, 1,'" + TextBox2_toDate + "')) ;", connection);
commandAvg1month.CommandType = CommandType.Text;

你认为SQL是聪明的,因为字符串是DateTime吗? ;)

更正DateADD函数中的TextBox1_FromDate.TextTextBox2_ToDate变量

答案 1 :(得分:0)

理论上,您将TextBox连接到字符串(System.Web.UI.WebControls.TextBox,而不是Text属性的实际值)。

TextBox2_toDate.Text << .Text 

但实际上,您应该将其绑定为参数,而不是直接将其连接起来有多种原因,包括:

  • 如果日期未以兼容格式输入?
  • Sql Injection攻击的漏洞

另请注意,TIME是保留字,需要通过添加括号来处理,即[TIME]