【发布时间】:2010-07-27 05:05:37
【问题描述】:
我的日期看起来像 1003029303,我猜这就是所谓的 linux UNIX 时间戳。
我应该以什么格式将其保存在 mysql 数据库中?我不认为 int(10) 是正确的方法。
`gottime` int(10)
【问题讨论】:
-
它更准确地称为 UNIX 时间戳。但我只是在吹毛求疵。
我的日期看起来像 1003029303,我猜这就是所谓的 linux UNIX 时间戳。
我应该以什么格式将其保存在 mysql 数据库中?我不认为 int(10) 是正确的方法。
`gottime` int(10)
【问题讨论】:
我认为您正在尝试保存生日或类似的东西。 DATETIME 格式是存储过去日期的正确方法。 unix 时间戳只能用于不超过 30-40 +/- 年的当天项目。
MySQL DATETIME 格式为 YYYY-MM-DD HH:MM:SS。
【讨论】:
我建议使用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)
【讨论】:
您不应该在数据库中存储 UNIX 时间戳。主要是因为 MySQL(以及其他品牌)数据库包含 DATE 函数来计算您能想到的大多数类型的 DATE 数学。而如果将其存储为时间戳,则必须先在 mysql 中转换时间戳,然后对其进行格式化,或者使用 PHP 的 date() 函数。
【讨论】:
时间戳只是整数。你可以这样存储它。
您还可以使用 MySQL 的 TIMESTAMP 数据类型和 FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 函数来转换 MySQL 的格式。
$query = "UPDATE table SET
datetimefield = FROM_UNIXTIME($phpdate)
WHERE...";
$query = "SELECT UNIX_TIMESTAMP(datetimefield)
FROM table WHERE...";
【讨论】:
就个人而言,我使用 DATETIME 字段类型将日期存储在 MySQL 数据库中。例如,2010-07-27 09:30:09。
它比时间戳更容易阅读,如果需要将其转换为 UNIX 时间戳,可以使用 PHP 的 strtotime() 函数。
【讨论】: