SQL Server查询中的重复时间戳:如何添加毫秒并避免重复?

时间:2014-07-01 12:33:48

标签: sql sql-server

我在SQL Server中有这个表[myTable]:

ID | Timestamp [datatype= datetime]
1  | 2013-08-05 23:09:02.000
2  | 2013-11-05 23:00:00.000
3  | 2013-08-05 23:09:02.000
4  | 2013-11-05 23:00:00.000
5  | 2014-01-01 22:00:00.000

在表格中,我[有时]有一些重复的时间戳。使用SELECT语句,如何为每个重复值添加1毫秒,那么我只有唯一的时间戳?

输出将是:

ID | Timestamp
1  | 2013-08-05 23:09:02.000
2  | 2013-11-05 23:00:00.000
3  | 2013-08-05 23:09:02.001
4  | 2013-11-05 23:00:00.001
5  | 2014-01-01 22:00:00.000

提前致谢。

3 个答案:

答案 0 :(得分:1)

SELECT id, DATEADD(MILLISECOND,ROW_NUMBER() OVER (PARTITION BY Timestamp ORDER BY Id)-1,Timestamp) Timestamp

答案 1 :(得分:0)

SELECT
    DATEADD(ms,(ID*10),tbl.[TIMESTAMP]),tbl.*
FROM [TABLE] tbl
INNER JOIN (
    SELECT
        [TIMESTAMP],Count(*) [CNT]
    FROM [TABLE]
    GROUP BY [TIMESTAMP]
    HAVING count(*)>1
) dupe ON dupe.[TIMESTAMP]=tbl.[TIMESTAMP]

答案 2 :(得分:0)

如果时间戳列不是键的一部分,而您想要的只是避免重复,则可以使用rowversion。

CREATE TABLE table (
--,TIMESTAMP rowversion
)