0

我的数据格式为“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;
4

2 回答 2

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

于 2013-01-18T15:03:56.983 回答
1

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

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

PHP

$timestamp = date('U'); 

MySQL

INSERT INTO table SET timestamp = UNIX_TIMESTAMP()
于 2013-01-18T15:09:57.427 回答