我的数据格式为“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;
答案 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()