我的日期看起来像1003029303
,我想这就是所谓的 linux UNIX时间戳。
我应该在mysql数据库中保存哪种格式?我不认为int(10)是正确的方法。
`gottime` int(10)
答案 0 :(得分:9)
我认为你试图保存生日或类似的东西。 DATETIME格式是存储过去日期的正确方法。 unix时间戳只能用于不超过30-40 +/-年的当天日期项目。
MySQL DATETIME格式为YYYY-MM-DD HH:MM:SS。
答案 1 :(得分:5)
我建议使用DATETIME
数据类型,然后根据需要使用FROM_UNIXTIME()
和UNIX_TIMESTAMP()
函数进行转换:
SELECT FROM_UNIXTIME(1003029303);
+---------------------------+
| FROM_UNIXTIME(1003029303) |
+---------------------------+
| 2001-10-14 05:15:03 |
+---------------------------+
1 row in set (0.08 sec)
SELECT UNIX_TIMESTAMP('2001-10-14 05:15:03');
+---------------------------------------+
| UNIX_TIMESTAMP('2001-10-14 05:15:03') |
+---------------------------------------+
| 1003029303 |
+---------------------------------------+
1 row in set (0.00 sec)
答案 2 :(得分:4)
您不应将UNIX时间戳存储在数据库中。主要是因为MySQL(以及其他品牌)数据库包含DATE函数来计算您能想到的大多数任何类型的DATE数学。如果您将其存储为时间戳,则必须首先在mysql中转换时间戳然后格式化它或使用PHP的date()函数。
答案 3 :(得分:3)
时间戳只是整数。你可以这样存储它。
你也可以使用MySQL的TIMESTAMP数据类型和FROM_UNIXTIME()以及UNIX_TIMESTAMP()函数来转换为MySQL的格式。
$query = "UPDATE table SET
datetimefield = FROM_UNIXTIME($phpdate)
WHERE...";
$query = "SELECT UNIX_TIMESTAMP(datetimefield)
FROM table WHERE...";
答案 4 :(得分:2)
就个人而言,我使用DATETIME
字段类型在MySQL数据库中存储日期。例如,2010-07-27 09:30:09
。
它比时间戳更容易阅读,如果你需要将它转换为UNIX时间戳,你可以使用PHP的strtotime()
函数来完成。