mysql - 在不使用代码服务器的情况下同时更新和转换列的值

标签 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 语句在不使用代码服务器的情况下同时处理更新和转换吗?作为代码服务器我只需要这样做:

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

与 SQL 语句类似吗?

最佳答案

如果 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;

请参阅 fiddle here 。或者,如果您只需要 SELECT,您可以使用:

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

关于mysql - 在不使用代码服务器的情况下同时更新和转换列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475248/

相关文章:

php - 我不知道我的 SQL 连接出了什么问题,这是我第一次使用它

java - 在 Java 中使用 SQL 插入变量

sql - Firebird 查询 - 包含下一行的值

java - 使用 Java 显示 SQL 表中的重复条目

java - Tomcat 连接池配置 : DataSource type and "Too many connection" error

mysql - 选择小于最后一个的值

mysql - 如何只获取给定 mysql 查询的列名?

sql - 这是一个缓慢的查询吗?可以改进吗?

sql - 从另一个别名中减去别名?

mysql - 周期性 MySql 超时,然后是 ASP.NET 网站中的连接峰值