PHP:安全地将mySQL中的字段日期从“datetime”转换为“unix timestamp”而不会丢失数据

时间:2013-09-11 11:14:36

标签: php mysql sql unix datetime

问题

我需要从实际的日期时间格式字段日期安全地转换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(日期)

  4. 我需要帮助PT.3

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

    e.g。

      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
    
    }
    

2 个答案:

答案 0 :(得分:0)

  1. 备份表
  2. 检查备份是否安全
  3. 将表字段类型从datetime更改为varchar
  4. 更新表集字段= unix_timestamp(字段)
  5. 将表字段类型从varchar更改为int
  6. 但是我根本不会做这样的转换

答案 1 :(得分:0)

首先,转换此类数据的最安全方法是不要动态执行此操作。

我要做的第一件事就是在你的表中添加另一列。然后假设我们没有修改现有数据,我会考虑使用the Unix_timestamp mysql函数。如果您已经将数据存储在日期数据类型中,那么对于mysql来说,它似乎很安全。

考虑到这一点,运行类似的事情似乎很简单:

update MyTable set newtimeStampColumn=UNIX_TIMESTAMP(oldDateColumn);

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