将所有列转换为从日期到时间戳MySQL的行

时间:2012-09-13 14:20:02

标签: mysql date timestamp

我有一个包含13000行的数据库。每行包含“date”列,现在采用这种格式(示例):2012-09-01 17:53:28,但我希望它们是TIMESTAMP。

我应该运行什么查询来更新所有行上从日期到时间戳的所有名为'date'的列?

由于

4 个答案:

答案 0 :(得分:5)

使用ALTER TABLE命令从一种类型转换为另一种类型非常简单:

ALTER TABLE table_name CHANGE old_date new_timestamp TIMESTAMP

如果您有大量数据和大量索引,此过程可能需要一段时间才能完成。

我不确定您为什么要将这些内容切换为TIMESTAMP类型,因为其范围比DATETIME更有限。差异为documented,重要的是要知道。

答案 1 :(得分:3)

目前还不清楚你要求的是什么。存在以下数据类型:datetimedatetimetimestamp。并且有UNIX_TIMESTAMP,这是自1970-01-01以来的秒数,但我不认为这就是你所追求的。

我建议你阅读this

  

DATETIME类型用于包含日期和时间的值   部分。 MySQL在'YYYY-MM-DD中检索并显示DATETIME值   HH:MM:SS'格式。支持的范围是'1000-01-01 00:00:00'到   '9999-12-31 23:59:59'。

     

TIMESTAMP数据类型用于包含date和的值   时间部分。 TIMESTAMP的范围是'1970-01-01 00:00:01'UTC到   '2038-01-19 03:14:07'UTC。

如果要转换列date,请执行:

ALTER TABLE yourTable MODIFY COLUMN yourDateColumn TIMESTAMP;

答案 2 :(得分:0)

SELECT UNIX_TIMESTAMP('2012-09-01 17:53:28');

答案 3 :(得分:0)

您可以使用UNIX_TIMESTAMP()函数在执行查询时将值作为时间戳返回。像这样:

mysqli_query("select UNIX_TIMESTAMP(date) as date from table");