关于php:PDO:从(d / m / y)更新mysql`date`列到时间戳

PDO: update mysql `date` column from (d/m/y) to timestamp

我有一个mysql users表,其中列join_date的格式为"d/m/y"。我只想将此列更新为现有数据的时间戳。

1
2
id    name    join_date
1     john    08/02/2014

现在,我需要运行一个代码(如while loop或foreach),将列join_date中的所有日期数据更新为时间戳〔time():〕,如下所示:

1
2
id    name    join_date
1     john    1391814000

有什么建议吗?事先谢谢。


在评论中,我们可以发现不是TIMESTAMP而是DATE是您应用程序的最佳数据类型。假设join_date是varchar列,可以发出以下SQL命令来更改列类型并转换数据。

首先,您需要添加一个新的临时列:

1
ALTER TABLE `users` ADD `temp_date` DATE;

然后将现有字符串转换为DATE值:

1
UPDATE `users` SET `temp_date` = STR_TO_DATE(`join_date`, '%c/%e/%Y');

现在可以删除现有列:

1
ALTER TABLE `users` DROP `join_date`

最后重命名临时列:

1
ALTER TABLE `users` CHANGE `temp_date` `join_date` DATE;