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

时间:2015-08-13 12:53:15

标签: sql tsql dateadd datepart

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

那么我怎样才能减去单个分钟值而不是56分

1 个答案:

答案 0 :(得分:2)

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

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

Modulo返回除法的余数,因此在56%10的情况下,余数将为6。

如果你需要删除秒/毫秒/纳秒,一种方法是链接几个dateadd操作,虽然我怀疑可能有更好的方法。