计算%准确度:(实际日期 - 计划日期)/计划日期IN ms sql 2010或2013

时间:2013-10-23 19:11:31

标签: sql-server date-arithmetic time-estimation

计算%准确度:

(实际日期 - 计划日期)/计划日期~4.2%超过或低于日期。

我有一个datediff的红利,但不是除数。

我可以在excel中执行但不能在sql中执行。

您的估算有多准确?

Plan Deploy Date = 5/1/2013

Actual Deploy Date = 6/15/2013

Algorithm = (Actual Date - Plan Date) / Plan Date

(6/15/2013 - 5/1/2013) / 5/1/2013 *100.0 = 10.9% (missed plan date by approx 11%)

1 个答案:

答案 0 :(得分:0)

您需要使用项目预算的天数作为除数而不是计划的完成日期。

在SQL Server或任何其他上下文中除以日期没有数学意义,因为日期是interval measurement scale.这意味着没有有意义的零,因此时间比例只对小的子集有意义时间。

在您的示例中,由于您说错过一年的项目会错过100%,因此您的计算应该是: (2013年6月15日 - 2013年5月1日)/ 365 * 100 或者在SQL Server中,例如: SELECT(DATEDIFF(DAY,'2013-06-15','2013-05-01')/ 365)* 100

它为您提供完成项目所需的天数与预期天数的比率。

如果你要将sql语句中的365替换为日期2013-05-01,那么你会得到一些与你期望的完全不同的东西,因为再次没有真正的零,所以sql server任意选择了一个。

在您的预算时间示例中,您绝不会将(3000 - 1000)/ 1000表达为(3000 - 1000)/ 5/1/2013

但这正是你在日期计算中所尝试的,只是在不同的时间范围内。

  

天数的差异是正确的。但它是(天,周,月......)的百分比。你错过了百分之几(天,周,月......无关紧要)。 - user2912796

这很重要。如果您希望结果在几天内,并且股息以天为单位,您可以插入365,就像您几个小时一样。如果您切换到红利的另一个时间间隔,您还必须切换除数。