相关疑难解决方法(0)

unix时间戳应该如何存储在int列中?

由于统计原因,我有一个包含数百万次写入的日志记录表.所有列都是int外键.我还要为每一行添加一个时间戳列.鉴于DATETIME占用8位 - 我将int(10) unsigned用于将存储空间(和该列上的索引)减少一半.

但是,我想知道这个专栏什么时候不再适用.在2038年1月19日凌晨3:14:07,值为9,999,999,999将是UNIX时间戳的问题 - 但MySQL中的unsigned int仅最多可容纳4,294,967,295,时间戳4294967295在我的PHP应用程序中显示无效数字.

那么这是什么意思?MySQL中存储int时间戳的结尾是否会在2021年的某个时间结束,因为它无法一直到9999999999?

回答:

  1. 2147483647是2038(不是9999999999)所以没有问题.
  2. unsigned 因为2147483647适合签名的MySQL int,所以不需要.

mysql datetime unix-timestamp

60
推荐指数
1
解决办法
7万
查看次数

使用PHP和MySQL存储当前时间的推荐方法是什么?

我最初的做法是:

$current = time(); // save this to column CURRENT_TIME with column type VARCHAR

//retrieve it like this
$retrieved = mysql_query(....) //assume query for getting the stored time value
$time = strtotime($retrieved);
Run Code Online (Sandbox Code Playgroud)

我遇到过以下方法:

  1. 使用gmstrftime处理GMT
  2. 使用INT而不是VARCHAR
  3. 使用mysql函数CURTIMECURDATE
  4. 使用UNIX_TIMESTAMPmysql函数

没有一个使用DATETIMETIMESTAMPmysql var类型.

你对这个有更好的方法吗?

php mysql gmt

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

mysql ×2

datetime ×1

gmt ×1

php ×1

unix-timestamp ×1