Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中存储时间_Mysql_Datetime - Fatal编程技术网

在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,

我有“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;

最好的方法是使用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()