求助,计算时间差问题,总是重复数据!
有一个EXCEL表,记录着三个时间段的工作时间,
time1,time2,time3
把数据读到数据库后变成
time11,time12,time21,time22,time31,time32
现在计算前两个时间段的时间差然后相加,得出这两个时间段内的总工时,因为有的时间段的记录是空的,所以不能计算在内!
比如
time11是空的,那time12-time11就不能计算,只计算time22-time21的时间
我做出来可以算出时间了,可是有的时候time11,time12,time21,time22都是空的,他也是把上一天的时间记录下来,TimeSpan st1,ts2的值如果遇到第二天是空的,那总是保留上一天的时间。出来的时间就相同了。请问的的程序错在哪啦?麻烦帮忙下。
SqlConnection conn=new SqlConnection(cnString);
conn.Open();
string str1="select * from table1";
SqlDataAdapter myCommand = new SqlDataAdapter(str1,conn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "table");
int max=ds.Tables["table"].Rows.Count;
if( max > 0 )
{
for(int i=0;i<max;i++)
{
if(ds.Tables["table"].Rows[i]["time12"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time11"].ToString().Trim()!="")
{
ts1=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time12"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time11"]);
}
}
if(ds.Tables["table"].Rows[i]["time22"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time21"].ToString().Trim()!="")
{
ts2=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time22"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time21"]);
}
}
string datatime="";
if(Convert.ToString(ts1).Trim()=="")
{
datatime=Convert.ToString(ts2);
}
else if(Convert.ToString(ts2).Trim()=="")
{
datatime=Convert.ToString(ts1);
}
else
{
datatime=Convert.ToString(ts1.Hours+ts2.Hours);
}
string str2="update table1 set datatime=@datatime where id="+ds.Tables["table"].Rows[i]["id"].ToString();
SqlCommand cmd=new SqlCommand(str2,conn);
cmd.Parameters.Add(new SqlParameter("@datatime",SqlDbType.Char,20));
cmd.Parameters["@datatime"].Value=datatime.Trim();
cmd.ExecuteNonQuery();
}
conn.Close();
}
else
{
MessageBox.Show("数据为空,请导入数据!");
}
time1,time2,time3
把数据读到数据库后变成
time11,time12,time21,time22,time31,time32
现在计算前两个时间段的时间差然后相加,得出这两个时间段内的总工时,因为有的时间段的记录是空的,所以不能计算在内!
比如
time11是空的,那time12-time11就不能计算,只计算time22-time21的时间
我做出来可以算出时间了,可是有的时候time11,time12,time21,time22都是空的,他也是把上一天的时间记录下来,TimeSpan st1,ts2的值如果遇到第二天是空的,那总是保留上一天的时间。出来的时间就相同了。请问的的程序错在哪啦?麻烦帮忙下。
SqlConnection conn=new SqlConnection(cnString);
conn.Open();
string str1="select * from table1";
SqlDataAdapter myCommand = new SqlDataAdapter(str1,conn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "table");
int max=ds.Tables["table"].Rows.Count;
if( max > 0 )
{
for(int i=0;i<max;i++)
{
if(ds.Tables["table"].Rows[i]["time12"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time11"].ToString().Trim()!="")
{
ts1=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time12"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time11"]);
}
}
if(ds.Tables["table"].Rows[i]["time22"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time21"].ToString().Trim()!="")
{
ts2=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time22"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time21"]);
}
}
string datatime="";
if(Convert.ToString(ts1).Trim()=="")
{
datatime=Convert.ToString(ts2);
}
else if(Convert.ToString(ts2).Trim()=="")
{
datatime=Convert.ToString(ts1);
}
else
{
datatime=Convert.ToString(ts1.Hours+ts2.Hours);
}
string str2="update table1 set datatime=@datatime where id="+ds.Tables["table"].Rows[i]["id"].ToString();
SqlCommand cmd=new SqlCommand(str2,conn);
cmd.Parameters.Add(new SqlParameter("@datatime",SqlDbType.Char,20));
cmd.Parameters["@datatime"].Value=datatime.Trim();
cmd.ExecuteNonQuery();
}
conn.Close();
}
else
{
MessageBox.Show("数据为空,请导入数据!");
}
...全文
相关推荐
js防止表单重复提交实现代码
在网页开发中,防止表单重复提交是一个重要的问题,它能确保用户的数据只被处理一次,避免因网络延迟或误操作导致的重复数据插入。
Mysql利用group by分组排序
总之,Mysql的`GROUP BY`分组排序功能为我们提供了一种有效的方式来处理复杂的数据排序和选择问题,尤其是在需要找到每个分组的“最值”时。
Python爬虫实现全国失信被执行人名单查询功能示例
同时,通过计算请求前后的时间差,我们可以评估爬虫程序的运行效率和资源消耗。
pandas官方文档中文版_pandas_数据清洗_
我们可以使用`duplicated()`来检测重复行,`nunique()`计算各列的唯一值数量,以此发现重复数据和异常值。对于重复数据,可以使用`drop_duplicates()`去除。
MySQL常用函数与关键词[项目代码]
这些函数使得开发者可以轻松处理时间数据,执行时间差计算或转换时间戳。在数据库操作中,获取服务器信息也是一个常见的需求,因此version()函数被包含在内。


