0

我有一个像这样的表'mytable'

ID | dateTime            |     data      | 
------------------------------------------
1  | 2013-09-01 00:15:00 |   some data   |
2  | 2013-09-01 00:15:00 |   some data   |
4  | 2013-09-01 00:15:00 |   some data   |
5  | 2013-09-01 00:30:00 |   some data   |
6  | 2013-09-01 00:30:00 |   some data   |
7  | 2013-09-01 00:30:00 |   some data   |
8  | 2013-09-01 00:45:00 |   some data   |
9  | 2013-09-01 00:45:00 |   some data   |
10 | 2013-09-01 00:45:00 |   some data   |

我以前很好,但我不小心将 dateTime 更改为 15 分钟(我应该将它舍入 5 分钟)请参考这个,不,我想将时间舍入 5 分钟。

我认为我能做到这一点的唯一方法是获取一条记录的日期时间,然后检查下一行中的记录,如果两者相同,则添加 5 分钟。如何获取下一行的值并将其与上一行进行比较?

谁能帮我这个??

谢谢

4

1 回答 1

0

此查询将输出新的 datetime 值,每次 datetime 与上一行相同时,我添加 5 分钟,按 Id 排序:

SELECT ID, 
    DATE_ADD(dateTime, INTERVAL 5 * (ID - 
        (SELECT MIN(ID) FROM MyTable T2 WHERE T2.dateTime = T1.dateTime)
    ) MINUTE) AS dateTime,
    data
)
FROM MyTable T1

它的工作原理是将当前行与同一 dateTime 值的第一行(最小 ID)之间的 ID 值差异相加 5 倍。

虽然这肯定会满足您的需求,但取决于您如何四舍五入到 15 分钟,输出不一定与您从原始数据四舍五入到 5 分钟时相同。您最好的选择是从备份中恢复。

于 2013-10-10T11:07:16.930 回答