我有"2013-01-17 18:46:47 -0800"one_answers"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;
最好的方法是使用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。
如果你使用时间戳,你的字段应该是一个"整数"而不是一个varchar。这将提供更好的性能(例如,如果您为此列使用索引)。
如果你不需要1970年之前的日期,我建议使用时间戳,而不是datetime。它更容易使用。
PHP$timestamp = date('U');
MySQL INSERT INTO table SET timestamp = UNIX_TIMESTAMP()