3

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

我应该运行什么查询来将所有名为“日期”的列从日期更新为所有行的时间戳?

谢谢

4

4 回答 4

6

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

ALTER TABLE table_name CHANGE old_date new_timestamp TIMESTAMP

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

我不确定您为什么要将这些切换为TIMESTAMP类型,因为它的范围比DATETIME. 差异已记录在案并且很重要。

于 2012-09-13T14:38:40.927 回答
3

目前还不清楚你在问什么。存在以下数据类型:datetime和。还有,这是自 1970-01-01 以来的秒数,但我认为这不是你所追求的。datetimetimestampUNIX_TIMESTAMP

我建议你阅读这个

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

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

当您要转换列时,date请执行以下操作:

ALTER TABLE yourTable MODIFY COLUMN yourDateColumn TIMESTAMP;
于 2012-09-13T14:36:29.737 回答
1
SELECT UNIX_TIMESTAMP('2012-09-01 17:53:28');
于 2012-09-13T14:25:17.443 回答
1

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

mysqli_query("select UNIX_TIMESTAMP(date) as date from table");
于 2012-09-13T14:29:22.563 回答