我需要计算用户在网站上的停留时间。它是登出时间和登录时间之间的差别,给出像“ X 先生在线上花费了4小时43分钟”的结果。因此,要存储4小时43分钟的值,我像这样声明:
duration
time NOT NULL
这是有效的方式还是有更好的存储方法?我需要将其存储在数据库中,因为我需要将其用于其他计算和用例。
将其存储为整数秒数将是最好的方法。
UPDATE
将会更加简洁明了,即duration = duration + $increment
TIME
字段存在限制,例如“TIME
值的范围可能从'-838: 59: 59'
到'838: 59: 59'
”我不会使用时间,因为你会受到24小时的限制。最简单的方法就是将一个整数以分钟(或秒,取决于所需的分辨率)的形式存储。
考虑将两个值都存储为UNIX时代差。
通常我更喜欢使用带符号的(64位)大整数(用于秒级分辨率),或者带符号的(64位)双精度浮点数(如果需要小数秒),或者带符号的(32位)整数(如果缩小到分钟或小时)。
在列名中明确单位,例如使用后缀“_epoch_minutely”,例如:“started_epoch_minutely”,“finished_epoch_minutely”。