我有一个数据表,其中包含请求的步骤历史记录。如何计算数据表上的状态之间的天数
下面是数据的一个例子:
我需要怎么每个状态之间的天数已通过天的地方。
当然,如果只有一个状态,则天应采用交易发生日和今天的日期之间经过的天。
任何线索?
我有一个数据表,其中包含请求的步骤历史记录。如何计算数据表上的状态之间的天数
下面是数据的一个例子:
我需要怎么每个状态之间的天数已通过天的地方。
当然,如果只有一个状态,则天应采用交易发生日和今天的日期之间经过的天。
任何线索?
这可能会帮助您解决问题: 通过集合的迭代,从当前行中减去前一行的日期列值.TotalDays()
将返回一个双值表示日差异。这可以实现如下:
var temTable = myDatatable.AsEnumerable().Select(x => x).ToList();
for (int i = 0; i < temTable.Count; i++)
{
double days = 0;
if (i != 0)
days = ((DateTime)temTable[i]["date"] - (DateTime)temTable[i - 1]["date"]).TotalDays;
temTable[i]["days"] = days;
}
SELECT r.dDate,r.dHour,r.dStatus,DATEDIFF(
DAY,LAG(r.dDate,1,GETDATE())
OVER (ORDER BY r.dDate),r.dDate) AS DAYS
FROM tbData r;
我相信,上述在SQL Server查询将提供所需的输出。 但是为了用新列“天”更新表,需要一些额外的/其他的代码。我仍在努力。如果你得到了解决,请上传... 我没有花时间在我的考虑......你加太.... 您可以使用字段类型日期时间(更换日期和时间) ,会降低风险....
SELECT dDate,dHour,dStatus,DATEDIFF( DAY,LAG(dDate,1,GETDATE()) OVER(ORDER BY dDate),dDate)AS天TBDATA; =>给出类似的结果 –
WITH newTable AS (
SELECT dStatus,ABS(DATEDIFF(
DAY,LAG(dDate,1,GETDATE())
OVER (ORDER BY dDate),dDate)) AS dDays FROM tbData
)
UPDATE tbData SET dDays=nt.dDays
FROM newTable nt
WHERE nt.dStatus = tbData.dStatus;
我相信这将解决问题..... 小时现场不被视为.....谢谢....
你想在C#或SQL中做到这一点? – Andrei
[这个答案](http://stackoverflow.com/a/34138229/718373)看起来是迎合SQL中类似的东西,请看一看。 – fujiFX
在C#,SQL也将是非常好的 – VAAA