日期:2014-05-18  浏览次数:20951 次

问个数据dateadd奇怪的问题
我的函数是这样:
void InsertAndUpdate(string sql)
{
using(System.Data.SqlClient.SqlConnection cn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]))
{
cn.Open();
System.Data.SqlClient.SqlTransaction ts=cn.BeginTransaction();
try
{
using(System.Data.SqlClient.SqlCommand cm=cn.CreateCommand())
{
cm.Transaction=ts;
cm.CommandType=CommandType.Text;
cm.CommandText=sql;
cm.ExecuteNonQuery();
UpdateJbDFXX(cm);
ts.Commit();
}
}
catch
{
ts.Rollback();
throw new SystemException("操作失败!");
}
}
}

void UpdateJbDFXX(System.Data.SqlClient.SqlCommand cm)
{
cm.CommandType=CommandType.Text;
cm.CommandText="";
cm.CommandText=" update dfgl_jbdfxx set zjzfrq=DateAdd(m,jfrq,zjzfrq) where bh="+this.bhh.Value;
cm.ExecuteNonQuery();
}
#endregion
---但是这样执行的化:会除了加上月份还会加上天数UpdateJbDFXX函数中,但是我直接执行sql在sqlserver中就不会
:例如:zjzfrq=2021-09-04 00:00:00.000 bh=100 jfrq=5
执行后就成为:zjzfrq=2022-02-09 00:00:00.000
但是直接执行sql 在sql server中不会



------解决方案--------------------
帮顶
------解决方案--------------------
mark
------解决方案--------------------
SqlConnection conn = new SqlConnection();
SqlCommand command = new SqlCommand("update table set b = dateadd(m,5,b)", conn);
command.CommandType = CommandType.Text;
conn.Open();
int i = command.ExecuteNonQuery();
conn.Close();
Console.WriteLine(i.ToString());
----------------------------------------------------
测试过了,不存在楼主那样的问题
------解决方案--------------------
结果都是2022-02-04 00:00:00.000
------解决方案--------------------
探讨
SqlConnection conn = new SqlConnection();
SqlCommand command = new SqlCommand("update table set b = dateadd(m,5,b)", conn);
command.CommandType = CommandType.Text;
conn.Open();
int i = command.ExecuteNonQuery();
conn.Close();
Console.WriteLine(i.ToString());
----------------------------------------------------
上面是我的代码

------解决方案--------------------
你的jfrq,zjzfrq,zjzfrq都是字段吗
------解决方案--------------------
你把这句
cm.CommandText=" update dfgl_jbdfxx set zjzfrq=DateAdd(m,jfrq,zjzfrq) where bh="+this.bhh.Value; 
改成
cm.CommandText=" update dfgl_jbdfxx set zjzfrq=DateAdd(m,jfrq,zjzfrq) where bh='"+this.bhh.Value+"'";