2015-02-26 3 views
0

Я разрабатываю систему викторины, которая имеет обратный отсчет. У меня есть следующие структуры таблицы:Рассчитать оставшееся время

---------------- 
Table - Test  
---------------- 
Id - int 
RemainingTime - time(3) 
LastAnswer - datetime 

Примечание: разница между «оставшимся временем» и «последним ответом» не будет больше, чем один час.

На каждом взаимодействии пользователя, «оставшееся время» будет уменьшаться с использованием SQL, как:

update Test set LastAnswer=GETDATE(), RemainingTime=RemainingTime - (GETDATE() - LastAnswer) where [email protected]; 

Этот код правильно работал в SQL Server 2008, но в SQL 2012 больше не работает.

Любое предложение?

ответ

0

Это должно сработать. Не уверены, поддерживает ли SQL Server 2008 DATEADD() и DATEDIFF() функции

UPDATE Test 
     SET LastAnswer=GETDATE() 
     , RemainingTime=DATEADD(minute,-DATEDIFF(MINUTE,LastAnswer,GETDATE()),RemainingTime) WHERE Id= @id; 
Смежные вопросы