mysql - 从长远来看,存储 Unix 时间戳是个坏主意

标签 mysql database go

<分区>

我最近开始开发一个新的应用程序,我需要能够比较用户活跃的时间,所以基本上我的逻辑是这样的:

func pseudo (user string) {
    v := GET Timestamp FROM users;

    if currentTimestamp - 1800 < dbTimestamp
        // Do something

我考虑过使用 Unix 时间戳,特别是秒数。但是我不确定存储它是否会成为一个问题,因为它只会增长,而且我意识到添加更多数字需要一段时间,出于性能原因,它感觉不是最好的。存储和比较 Unix 时间戳对于长期应用程序来说是个好主意吗?

旁注:

我的应用程序是用 go 编写的,所以虽然我可以存储日期时间,但我必须从数据库中提取日期时间并尝试使用糟糕的布局编号,并且尝试格式化它以使用布局编号变得更加复杂。

最佳答案

一年有 31,536,000 秒,因此需要 269 年多的时间才能将另一个数字添加到 unix 时间戳。

(10,000,000,000 - 1,510,798,414) / 31,536,000 = 269.1908

所以,就此而言,我会说你暂时还不错。

根据您使用的数据库列类型,一个更紧迫的问题可能是从 2038 年 1 月 19 日开始,您将无法再将时间戳存储在带符号的 32 位整数中,因为它们具有最大值(value) 2,147,483,647。

所以,我想说:在 2038 年 1 月 18 日之前,在您的显示器上贴一张便条以更改您的数据库列类型。如果您使用的是无符号 32 位整数类型,则在 2106 年之前都可以。

关于mysql - 从长远来看,存储 Unix 时间戳是个坏主意,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47320432/

相关文章:

php - 在数据库中存储和选择多个 ID

templates - 如何获得模板渲染的结果

php - 不能在写入上下文中使用方法返回值;不知道从这里去哪里

java - 这段代码在java中运行后没有显示输出?

php - 我正在使用使用 session 的登录脚本(PHP、MySQL)。我需要创建一个变量,以便我可以在其他页面中使用它?

go - 使用依赖注入(inject)测试包装函数

json - 是否可以将 JSON 部分反序列化为结构?

mysql - 是否可以在 MySQL "show variables"中仅显示值?

php - MySQL在一个查询中应用多个条件

php - 管理 Multi-Tenancy 数据库连接