在MySQL中存储时间
我有“2013-01-17 18:46:47-0800”和“1358477089”格式的数据……我想知道在mysql数据库中存储这些数据的最佳方式是什么,它允许我在特定的月、周、日等时间内选择结果。。使用mysql自己的函数 当前我的创建表代码如下。。“时间戳”需要更改 可见的在MySQL中存储时间,mysql,datetime,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,
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内置类型 MySQL提供了很多功能,允许您在某个月、周、日内选择结果,无论您需要什么 请参见此处的功能列表: 正如hek2mgl和其他人提到的,还有时间戳 MySQL将时间戳值从当前时区转换为UTC进行存储,并从UTC转换回当前时区进行检索。(其他类型(如DATETIME)不会出现这种情况。)
如果存储时间戳值,然后更改时区并检索该值,则检索到的值与存储的值不同
我建议您使用DATETIME最好的方法是使用MySQL内置类型 MySQL提供了很多功能,允许您在某个月、周、日内选择结果,无论您需要什么 请参见此处的功能列表: 正如hek2mgl和其他人提到的,还有时间戳 MySQL将时间戳值从当前时区转换为UTC进行存储,并从UTC转换回当前时区进行检索。(其他类型(如DATETIME)不会出现这种情况。)
如果存储时间戳值,然后更改时区并检索该值,则检索到的值与存储的值不同
我建议您使用DATETIME如果您使用时间戳,您的字段应该是“整数”而不是varchar。这提供了更好的性能(例如,如果您对此列使用索引) 如果您不需要在1970年之前有日期,我建议使用时间戳,而不是日期时间。它更容易使用 PHP MySQL
如果使用时间戳,则字段应为“整数”而不是varchar。这提供了更好的性能(例如,如果您对此列使用索引) 如果您不需要在1970年之前有日期,我建议使用时间戳,而不是日期时间。它更容易使用 PHP MySQL
取决于你要做什么,当然是+1。时间戳类型也应该提到是的,
timestamp
占用了一半的空间(4字节vs 8字节),因此如果您不需要存储1970-2037年以外的值,则值得考虑。这取决于您将做什么,当然是+1。时间戳类型也应该提到是的,timestamp
占用了一半的空间(4字节vs 8字节),因此如果您不需要存储1970-2037年以外的值,那么值得考虑。您肯定需要规范化时间戳字段并将其转换为本机mysql日期时间类型。现在这样做,你的实际问题就基本上消失了。。所以我可以编写php代码来实际插入所有数据。。我计划删除该表,并使用一个格式正确的时间列再次全部重做。。。只要弄清楚哪个时间元素将被转换成什么,您肯定需要规范化时间戳字段并将其转换为原生mysql datetime类型。现在这样做,你的实际问题就基本上消失了。。所以我可以编写php代码来实际插入所有数据。。我计划删除该表,并使用一个格式正确的时间列再次全部重做。。。只要计算出什么时间的东西会转换成什么。
$timestamp = date('U');
INSERT INTO table SET timestamp = UNIX_TIMESTAMP()