UNIX时间戳到MySQL日期时间
我有一个带有统计信息的表和一个名为UNIX时间戳到MySQL日期时间,mysql,datetime,timestamp,Mysql,Datetime,Timestamp,我有一个带有统计信息的表和一个名为time的字段,该字段带有Unix时间戳 表中大约有200行,但我想将Unix时间戳更改为MySQL DATETIME,而不丢失当前行。当前表格: CREATE TABLE `stats` ( `id` int(11) unsigned NOT NULL auto_increment, `time` int(11) NOT NULL, `domain` varchar(40) NOT NULL, `ip` varchar(20)
time
的字段,该字段带有Unix时间戳
表中大约有200行,但我想将Unix时间戳更改为MySQL DATETIME,而不丢失当前行。当前表格:
CREATE TABLE `stats` (
`id` int(11) unsigned NOT NULL auto_increment,
`time` int(11) NOT NULL,
`domain` varchar(40) NOT NULL,
`ip` varchar(20) NOT NULL,
`user_agent` varchar(255) NOT NULL,
`domain_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
因此,time
(INT)应该是一个DATETIME字段
如何将Unix时间戳更新为MySQL的DATETIME
记住在真正使用它之前测试它,这是从记忆中写出来的,但应该会给你一个好主意
ALTER TABLE `stats` CHANGE `time` `unix_time` int(11) NOT NULL // rename the old column
ALTER TABLE `stats` ADD `time` DATETIME NOT NULL // create the datetime column
UPDATE `stats` SET `time`=FROM_UNIXTIME(unix_time) // convert the data
ALTER TABLE `stats` DROP `unix_time` // drop the old unix time column
下面是一个PDO示例,说明如何在准备好的语句中使用来自\u UNIXTIME的:
$query = "INSERT INTO " .$this->table_name. " SET origTS=FROM_UNIXTIME(:d2)";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(":d2", $this->origTS); // UNIX time [ but seconds! ]
非常好,最后一个应该是altertable
stats
。谢谢干得好!工作得很好!您可以在中看到如何在datetime中转换时间戳
$query = "INSERT INTO " .$this->table_name. " SET origTS=FROM_UNIXTIME(:d2)";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(":d2", $this->origTS); // UNIX time [ but seconds! ]