Reputation: 115
I want to calculate time in 2 column(column STATUSIN
and column STATUSOUT
) and place the value in column WORKINGHOUR
as datetime.
This is the code to display data from the database:
<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>WORKINGHOUR</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("WORKINGHOUR") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
This is the code on backend:
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();
}
}
}
}
Upvotes: 1
Views: 170
Reputation: 11364
You can access the DateTime of each rows STATUSIN and STATUSOUT, convert it to DateTime and get the difference
foreach (DataRow pRow in dtDaily.Rows)
{
pRow["WORKINGHOUR"] = (pRow.Field<DateTime>("STATUSOUT") - pRow.Field<DateTime>("STATUSIN")).ToString();
}
// After the rows are updated, Then bind your datasource.
rptrDAILYDATAWH.DataSource = dtDaily;
rptrDAILYDATAWH.DataBind();
(stOut -stIn)
gives you TimeSpan that you can use to get TotalDays
or other properties if you want.
If you want to save the changes, use the Update command.
sda.Update(dtDaily);
Upvotes: 2