尝试计算现在和上次时间戳的差异并更新时间戳

时间:2012-01-24 23:19:32

标签: mysql

我正在尝试对用户在网站上花费的时间进行一些基本估算。我在javascript中有一个简单的轮询脚本,可以听到php脚本。我试图在一个sql语句中执行以下操作:

  • 计算now和last_on字段之间的差异(这是一个datetime字段)并将其添加到当前的active_time字段(这只是一个整数)
  • 然后更新updated_on以反映记录已更新

这是我正在尝试使用的sql;

UPDATE login_log 
SET active_time = active_time + ( SELECT  TIME_TO_SEC( TIMEDIFF( NOW(), updated_on ) ) ),
updated_on = NOW()
WHERE user_id = ? && session_id = ? AND status = 'active'

问题1 - 我假设我可以更新updated_on并仍然使用它来计算差异并且没有竞争条件,但有人可以确认或告诉我这不起作用吗?

问题2 - 我必须做一些其他古怪的事情,因为在abit之后,active_time已经过时了,因为它认为它已经持续了几个小时,而它只有20分钟。这个问题不是真正的范围,但如果有人发现任何错误,我会很高兴知道......

TIA

1 个答案:

答案 0 :(得分:0)

这似乎是错误的做法。我会简化它有两个字段,createdupdated_on,我称之为last_updated。要计算站点上的当前时间,您只需从当前时间中减去创建的值。据推测,你也想要一些永久记录。它来自last_updated字段,每次看到用户的请求(包括您的心跳)时都会更新。您只需使用当前时间更新它。 createdlast_updated之间的差异将成为您在网站上的永久记录。