2011-09-04 129 views
0

即时通讯尝试执行sql查询,将检查是否有一段时间(如10秒)从上次时间戳更新过去,如果是,则更改其他表。时间戳记sql查询

我的问题是如果ther是否有任何时间戳条件运算符可以检查?例如, <,>,=?

(我知道我可以在不同的查询做到这一点,但我尝试做它在1个查询)..

像这样的事情

   UPDATE Person SET isconnected=false 
      where person.email=(select from imalive where timestamp<10). 

人:

电子邮件:[email protected]

名称:丹

年龄:20

的IsAlive:

电子邮件:[email protected]

lastseen:2011-09-04 21点27分00秒

所以最后如果人上次看到的会超过10秒,他会去连接= false。

回答

2

对于每个数据库,语法会稍有变化。以下是使用SQL Server的示例:not exists

update Person 
set  IsConnected = 0 
where IsConnected <> 0 
     and not exists 
     (
     select * 
     from IsAlive 
     where Person.email = IsAlive.email 
       and IsAlive.timestamp > dateadd(s,-10,getdate()) 
     ) 
+0

首先感谢。但即时通讯使用hsql和我检查它不支持dateadd :-( – dan

+0

@dan:尝试'TIMESTAMPADD(SQL_TSI_SECOND,-10,CURRENT_TIMESTAMP)'? – Andomar