更新日期时间时间戳分钟值
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 操作,尽管我怀疑可能有更好的方法。
我们的数据记录器记录了一些不可处理的数据。
记录器正在记录 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 操作,尽管我怀疑可能有更好的方法。