不使用代码服务器同时更新和转换列的值

时间:2013-03-18 11:02:42

标签: mysql sql

我有一个包含以下列的表:

id   |   title  |   date
1    | Title A  | 15-06-2013
2    | Title B  | 25-06-2013
3    | Title C  | 05-07-2013
4    | Title D  | 19-09-2013

现在我需要将date列更改为Unix timestamp,所以它可以是这样的:

id   |   title  |   date
1    | Title A  | 1756346212
2    | Title B  | 1883216212
3    | Title C  | 1227346212
4    | Title D  | 1956436212

我可以使用SQL语句来处理update并在不使用代码服务器的情况下同时进行转换吗?作为代码服务器,我只需要这样做:

select each row => covert `date` to unix time stamp => update

会有类似SQL语句吗?

1 个答案:

答案 0 :(得分:1)

如果date是varchar列,并且您想将其转换为unix时间戳,我会这样做:

ALTER TABLE yourtable ADD COLUMN unixdate int;

UPDATE yourtable
SET unixdate = UNIX_TIMESTAMP(STR_TO_DATE(date, '%d-%m-%Y'));

ALTER TABLE yourtable DROP COLUMN date;

请参阅小提琴here。或者如果你只需要一个SELECT,你可以使用它:

SELECT id, title, UNIX_TIMESTAMP(STR_TO_DATE(`date`, '%d-%m-%Y')) `date`
FROM yourtable