我在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
提前致谢。
答案 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
)