人们可以在我的网站上购买 1、2、3、4 或 5 年的帐户。我想将这段时间存储在一个表中。这是我的 table (现在):
table: users
- user_id int(11)
- username varchar(48)
- password varchar(48)
- time_start int(11)
- time_end int(11)
当我添加一条记录时,我将 time_start 和 time_end 添加为:
UNIX_TIMESTAMP(NOW()) / UNIX_TIMESTAMP(NOW() + INTERVAL 1/2/3/4/5 year)
这是最好的方法吗?使用 UNIX 时间戳存储此数据。或者我应该只使用常规的日期时间字段吗?将 UNIX 时间戳存储在整数字段中是个好主意吗? 11 的长度是否足够?我已经测试过了,它有效。我之所以选择它是因为 UNIX 时间戳是 UTC 并且我在我的网站上使用了“时间之前”功能(它显示的时间如“2 秒前”、“3 分钟前”……如果我将它存储在一个日期时间字段,一切都出错了......)
我正在阅读 2038 年问题 ( https://en.wikipedia.org/wiki/Year_2038_problem )。以后这对我来说会是个问题吗?
关于, 山姆
PS:对不起我的英语,我希望我的问题足够清楚!
最佳答案
如果您当前的设置实际上持续那么长时间(不太可能),那么存储为日期时间对于“2038 年问题”会更好,并且在我看来,这使得事情很容易处理,并且易于人类阅读。您是否有理由对使用日期时间犹豫不决?
而且你的英语很好!
关于mysql - 数据库中的开始和结束时间戳(unix 时间戳或日期时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36847392/