Mysql 如何将字段从时间戳转换为日期时间
我有一个遗留数据库,其中有一个表包含字段: 开始日期时间戳, 过期日期日期时间 如果在具有不同时区的数据库上使用数据库,则会导致某些查询出现问题。Mysql 如何将字段从时间戳转换为日期时间,mysql,sql,Mysql,Sql,我有一个遗留数据库,其中有一个表包含字段: 开始日期时间戳, 过期日期日期时间 如果在具有不同时区的数据库上使用数据库,则会导致某些查询出现问题。 所以为了避免它们,我想将start_date转换为DATETIME。如何安全地将时间戳转换为日期时间?如果我将开始日期的类型从时间戳更改为日期时间,是否会丢失任何数据?mysql将如何将日期时间戳转换为日期时间?您可以使用date()函数编写查询以查找行并将开始时间字段转换为DATETIME 然后将字段类型更改为DATETIME 下一个更新字段,新值
所以为了避免它们,我想将start_date转换为DATETIME。如何安全地将时间戳转换为日期时间?如果我将开始日期的类型从时间戳更改为日期时间,是否会丢失任何数据?mysql将如何将日期时间戳转换为日期时间?您可以使用date()函数编写查询以查找行并将开始时间字段转换为DATETIME 然后将字段类型更改为DATETIME 下一个更新字段,新值存储在变量中 例如:
<?PHP
//.. your codes like connection & ...
// my_table is your table name.
$query = mysql_query("SELECT * FROM my_table");
$stored = array();
$i = 0;
while($row = mysql_fetch_assoc($query))
{
$stored[++$i] = date('Y-m-d H:i:s', $row["start_date"]);
}
mysql_query("alter table my_table modify start_date DATETIME;");
$query = mysql_query("SELECT * FROM my_table");
$i = 0;
while($row = mysql_fetch_assoc($query))
{
// Id is your primary key.
mysql_query("UPDATE my_table SET start_date='" . $stored[++$i] . "' WHERE id='" . $row['id'] . "'")
}
我会这样做:
1) 创建一个新的datetime
列
ALTER TABLE mytable ADD COLUMN mydatetime DATETIME;
ALTER TABLE mytable DROP COLUMN mytimestamp;
2) 使用时间戳值更新此列
UPDATE mytable SET mydatetime=FROM_UNIXTIME(UNIX_TIMESTAMP(mytimestamp));
3) 经过几次完整性检查后,删除时间戳
列
ALTER TABLE mytable ADD COLUMN mydatetime DATETIME;
ALTER TABLE mytable DROP COLUMN mytimestamp;
这对您来说应该足够安全,因为您可以保留原始的时间戳
列,只要您愿意
这里有一个例子。@Oleg不是我写的吗?我不明白你评论的意思。对不起,我不小心把它打印出来了。我会删除它。我只是想问这个查询如何转换时间戳日期?如果日期保存在不同的时区,我会有问题吗?我不这么认为,但最好的办法是在删除旧的mytimestamp
列之前尝试并检查它是否正常工作。您不需要UNIX\u TIMESTAMP()
:updatemytable SET mydatetime=FROM\u UNIXTIME(mytimestamp))代码>谢谢,它对我有用。@AlmirSarajčić我刚刚尝试在MySQL 5.6上不使用UNIX_时间戳
,结果总是null