【发布时间】:2020-02-12 07:56:59
【问题描述】:
我想计算不同行和不同列的持续时间。这是我的示例数据:
'STATUSIN'(in second row) - 'STATUSOUT'(in first row) 我想将输出放在“LOSTTIME”列中
例如:
08:07:53 - 08:06:22 = 00:01:31 (OUTPUT)
这是我显示数据库数据的代码:
<asp:Repeater ID="rptrDAILYDATAWH" runat="server">
<HeaderTemplate>
<table class="table">
<thead>
<tr>
<th>NIP</th>
<th>NAME</th>
<th>DEPARTMENT</th>
<th>IN</th>
<th>OUT</th>
<th>LOSTTIME</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<th><%# Eval("NIP") %></th>
<td><%# Eval("NAME") %></td>
<td><%# Eval("DEPARTMENT") %></td>
<td><%# Eval("STATUSIN") %></td>
<td><%# Eval("STATUSOUT") %></td>
<td><%# Eval("LOSTTIME") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
这是后端的代码:
protected void BindDAILYDATWHARptr() {
String CS = ConfigurationManager.ConnectionStrings["MANHOURConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS)) {
using (SqlCommand cmd = new SqlCommand("SELECT * FROM DAILYDATAWH", con)){
using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) {
DataTable dtDaily = new DataTable();
sda.Fill(dtDaily);
rptrDAILYDATAWH.DataSource = dtDaily;
rptrDAILYDATAWH.DataBind();
}
}
}
}
【问题讨论】:
-
如果
'STATUSOUT' <= 'STATUSIN'会发生什么? -
作为一般规则,避免使用
SELECT *,而是指定列名。如果您重新排序/重命名/删除列,这将有助于避免错误,因为这样您的查询就会中断,您会注意到您需要更早地更改代码。 -
对不起,我已经纠正了我的问题
-
如果一个用户在某一天拥有三种状态怎么办?
-
@SalmanA 这个数据只显示了 1 天,所以它的数据被过滤了 1 天。
标签: c# sql asp.net sql-server