我正在开发一个有倒计时的测验系统。我有一个下表结构:
----------------
Table - Test
----------------
Id - int
RemainingTime - time(3)
LastAnswer - datetime
注意:“剩余时间”和“最后答案”之间的差异不会超过一小时。
在每次用户交互时,“剩余时间”将使用如下的sql递减:
update Test set LastAnswer=GETDATE(), RemainingTime=RemainingTime - (GETDATE() - LastAnswer) where Id=@id;
此代码在sql server 2008中正常运行,但在sql 2012中不再有效。
有什么建议吗?
答案 0 :(得分:0)
这应该有效。不确定SQL Server 2008是否支持DATEADD()
和DATEDIFF()
函数
UPDATE Test
SET LastAnswer=GETDATE()
, RemainingTime=DATEADD(minute,-DATEDIFF(MINUTE,LastAnswer,GETDATE() ),RemainingTime ) WHERE Id= @id;