2015-08-13 59 views
0

我们的数据记录器记录了一些不可处理的数据。
记录仪正在记录10分钟的平均值。
由于制造商设备的缺陷已经记录了一些与时间戳跳分积分值喜欢如下
更新日期时间时间戳记分值

plantid         Value    Timestamp 
1F617EDE-7B11-416A-B8D1-FDD566020E13 1.10000002384186 2013-10-26 06:02:00.000 
1F617EDE-7B11-416A-B8D1-FDD566020E13 0.800000011920929 2013-10-26 08:56:00.000 

正如你所看到的,在第一个记录有02和第二56分钟。 我必须修复这些值回到0(在第1行)和第二行的50英寸,以使数据可用于进一步处理和分析。所以10分钟的价值。

我试着像下面

DECLARE @ttest DATETIME = '2013-10-26 08:56:00.000' 
SELECT @ttest 
SET @ttest = Dateadd(minute,-DATEPART(MINUTE, @ttest),@ttest) 
SELECT @ttest 

,但结果将是2013年10月26日08:00:00.000因为我计算减去56,但我需要计算零下6

那么如何我可以减去只有一分钟值6,而不是56

回答

2

您可以使用modulo%10得到个位数的分值:

Dateadd(minute, -DATEPART(MINUTE, @ttest) % 10, @ttest) 

模返回一个除法的余数,所以在56%的10个案例,其余的将是6

如果您需要删除秒/毫秒/纳秒过一个方式是几个连锁经营DATEADD,尽管我怀疑可能有更好的办法。

+0

完美,谢谢。这是工作 – veritaS

+0

如果时间戳还包含秒和毫秒怎么办?看来,OP想要截断其余部分。 –

+0

@TimSchmelter然后毫秒或秒就会被保留下来,并且不得不被截断;也许将日期时间转换为浮点数并做算术会更好。 OP只会谈论跳跃分钟,所以在这种情况下可能不成问题。 – jpw