我有一个名为“ SUMMARYDATA” 的表,该表的列为“ STATUSIN,STATUSOUT,LATECOME” ,我想在“ STATUSIN”列上选择最小值。并创建一个条件:IF MIN(STATUSIN) > "08.00 AM" Then LATECOME = MIN(STATUSIN) - "08.00 AM"
。如何选择最小日期值?以及如何计算MIN(STATUSIN) - "08.00 AM"
?
这是我的代码,用于显示数据库中的数据:
<asp:Repeater ID="rptrSUMMARYDATA" runat="server">
<HeaderTemplate>
<table class="table">
<thead>
<tr>
<th>IN</th>
<th>OUT</th>
<th>LATECOME</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("STATUSIN") %></td>
<td><%# Eval("STATUSOUT") %></td>
<td><%# Eval("LATECOME") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
这是我在后端的代码:
private void BindSUMMARYDATARptr()
{
String CS = ConfigurationManager.ConnectionStrings["MANHOURConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM SUMMARYDATA", con))
{
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dtDaily = new DataTable();
sda.Fill(dtDaily);
rptrSUMMARYDATA.DataSource = dtDaily;
rptrSUMMARYDATA.DataBind();
}
}
}
}
答案 0 :(得分:2)
你能试试这个吗?
SELECT STATUSIN,STATUSOUT, CASE WHEN CAST(STATUSIN AS TIME) > CAST('08:00:00' AS TIME)
THEN CONVERT(varchar, dateadd(s, -28800 ,STATUSIN), 108) END AS LATECOME
FROM SUMMARYDATA
答案 1 :(得分:1)
从MIN
获取datatable
,然后使用DateTime.Subtract
var minIN = Convert.ToDateTime(dt.AsEnumerable().Min(row => row["IN"]));
Console.WriteLine($"LATECOME {minIN.Subtract(minIN.Date + new TimeSpan(8, 0, 0))}");
注意:
AsEnumerable
是System.Data.DataSetExtensions
的一部分。从nuget安装此软件包
直接在数据库中更新(除非绝对必要,否则我不建议这样做)
UPDATE SUMMARYDATA
SET LATECOME = CASE WHEN DATEDIFF(s,DATEADD(HOUR, 8, CAST(CAST((select MIN(STATUSIN) from SUMMARYDATA) AS DATE) AS DATETIME)),(select MIN(STATUSIN) from SUMMARYDATA)) > 0 THEN
(CONVERT(TIME,(select MIN(STATUSIN) from SUMMARYDATA)-DATEADD(HOUR, 8, CAST(CAST((select MIN(STATUSIN) from SUMMARYDATA) AS DATE) AS DATETIME)))) ELSE NULL END
答案 2 :(得分:1)
select DATEADD(minute, -iif(CAST(STATUSIN as time) > CAST('08:00' as time), DATEDIFF(MINUTE,CAST('08:00' as time),CAST(STATUSIN as time)) ,0) , STATUSIN) as LATECOME
from SUMMARYDATA
答案 3 :(得分:0)
尝试一下:
libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value