2

问题

我需要安全地将 mySQL 数据库表 MYTABLE 中的日期格式从实际的日期时间格式字段日期:例如 2013-09-10 12:43:03 转换为其等效的unix 时间戳:1378816983,而不会影响现有的数千篇文章数据库。

我正在使用 PHP、mySql、Drupal。

我的方法

我的脚步

  1. 将表字段类型从日期时间更改为时间戳 [DONE]

  2. 转换实际内容类型字段:timestamp [DONE]

  3. 使用 PHP strtotime() 或 MYSQL 转换 4 个表中的现有文章数据字段:UNIX_TIMESTAMP(date)

我在 PT.3 上需要帮助

A. 对 pt 算法的一点帮助。3:

例如

  loop over all 4 tables {

       - create a new column date2 of type: int (or datetime?) 
       - copy all dates from date to date2 passing them through strtotime()
       - delete column date
       - rename column date2 to column date

}
4

2 回答 2

0
  1. 备份表
  2. 检查备份是否正常且安全
  3. 将表字段类型从 datetime 更改为 varchar
  4. 更新表集字段=unix_timestamp(field)
  5. 将表字段类型从 varchar 更改为 int

但是我根本不会做这样的转换

于 2013-09-11T11:18:39.730 回答
0

首先,像这样转换数据的最安全方法是不要即时进行。

我要做的第一件事是在您的表中添加另一列。然后鉴于我们没有修改现有数据,我会考虑使用Unix_timestamp mysql 函数。如果您已经将数据存储在日期数据类型中,那么 mysql 这样做似乎既好又安全。

鉴于此,运行以下内容似乎很简单:

update MyTable set newtimeStampColumn=UNIX_TIMESTAMP(oldDateColumn);

看看它是如何工作的。然后,您可以运行一些比较查询以确保您的所有数据都已正确转换。

于 2013-09-11T11:19:26.573 回答