保存1970年型日期的正确方法

时间:2010-07-27 05:05:38

标签: php mysql database time

我的日期看起来像1003029303,我想这就是所谓的 linux UNIX时间戳。

我应该在mysql数据库中保存哪种格式?我不认为int(10)是正确的方法。

`gottime` int(10)

5 个答案:

答案 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()函数来完成。