SqlServer 2008 时间戳修改
Timestamp Modification in SqlServer 2008
在 table 中我有 claimId
和 paidDate
。对于给定的 paidDate
,我有 20 个 ClaimID
。 paidDate
数据类型是日期时间。因此,业务需要付款日期对所有 ClaimID
都是唯一的。那么如何在 sqlserver.. 中更新 PaidDate
的唯一时间戳部分?
在支付日期列中使用默认的 getdate()
您可以使用:
DATEADD(MINUTE, ClaimID, PaidDate)
这将保留 paidDate 值,但会添加 ID 的分钟数。
如果 ID 非常大,您可能需要分发一个 ROW_NUMBER
并用它来添加分钟数。
@罗宾
将所有 claimid 保存在游标中并逐个更新,更新语句后保留 WAITFOR '00:00:01' 子句....每条记录将以 1 秒的差异更新...
@罗宾...
declare @claimid int
declare cur CURSOR FOR
select claimid from dbo.claimsID order by claimid
begin
open cur
FETCH next FROM cur
into @claimid
WHILE @@FETCH_STATUS = 0
begin
update dbo.claimsID set paiddate=getdate() where claimid=@claimid
waitfor delay '00:00:01'
FETCH next FROM cur
into @claimid
end
CLOSE cur
DEALLOCATE cur
end
在 table 中我有 claimId
和 paidDate
。对于给定的 paidDate
,我有 20 个 ClaimID
。 paidDate
数据类型是日期时间。因此,业务需要付款日期对所有 ClaimID
都是唯一的。那么如何在 sqlserver.. 中更新 PaidDate
的唯一时间戳部分?
在支付日期列中使用默认的 getdate()
您可以使用:
DATEADD(MINUTE, ClaimID, PaidDate)
这将保留 paidDate 值,但会添加 ID 的分钟数。
如果 ID 非常大,您可能需要分发一个 ROW_NUMBER
并用它来添加分钟数。
@罗宾
将所有 claimid 保存在游标中并逐个更新,更新语句后保留 WAITFOR '00:00:01' 子句....每条记录将以 1 秒的差异更新...
@罗宾...
declare @claimid int
declare cur CURSOR FOR
select claimid from dbo.claimsID order by claimid
begin
open cur
FETCH next FROM cur
into @claimid
WHILE @@FETCH_STATUS = 0
begin
update dbo.claimsID set paiddate=getdate() where claimid=@claimid
waitfor delay '00:00:01'
FETCH next FROM cur
into @claimid
end
CLOSE cur
DEALLOCATE cur
end