更新日期时间时间戳分钟值

Update datetime timestamp minute value

我们的数据记录器记录了一些不可处理的数据。
记录器正在记录 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

您可以使用modulo %10来获取个位数的分钟值:

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

Modulo returns 除法的余数,所以在 56%10 的情况下,余数将为 6。

如果您也需要删除 second/millisecond/nanosecond,一种方法是链接几个 dateadd 操作,尽管我怀疑可能有更好的方法。