在MySQL中存储时间

时间:2013-01-18 15:01:18

标签: mysql datetime

我的数据格式为“2013-01-17 18:46:47 -0800”和“1358477089”...我想知道在mysql数据库中存储这个的最佳方法是什么,允许我使用mysql自己的函数在某个月,周,日等内选择结果。

目前我的创建表代码是这样的......“时间戳”需要改变。

可见

CREATE TABLE IF NOT EXISTS `votes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `from` varchar(32) NOT NULL,
  `username` varchar(32) NOT NULL,
  `address` varchar(16) NOT NULL,
  `timestamp` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2 个答案:

答案 0 :(得分:5)

最好的方法是使用MySQL内置的DATETIME类型。

MySQL提供了许多功能,允许您在特定月份,周,日内选择结果,无论您需要什么。

在这里查看很棒的功能列表:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

正如 hek2mgl和其他人所提到的,还有 TIMESTAMP

MySQL将TIMESTAMP值从当前时区转换为UTC进行存储,然后从UTC返回到当前时区进行检索。 (对于其他类型,例如DATETIME,不会出现这种情况。)
如果存储TIMESTAMP值,然后更改时区并检索值,则检索的值与存储的值不同。

我鼓励并建议您使用 DATETIME

答案 1 :(得分:1)

如果使用时间戳,则字段应为“整数”而不是varchar。这提供了更好的性能(例如,如果您使用此列的索引)。

如果你不需要在1970年之前有日期,我会建议使用时间戳,而不是日期时间。它更容易使用。

PHP

$timestamp = date('U'); 

的MySQL

INSERT INTO table SET timestamp = UNIX_TIMESTAMP()