在MySQL中存储时间



我有"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()

相关内容

  • 没有找到相关文章

最新更新