VARCHAR到DATE - MySQL

时间:2016-10-25 17:59:17

标签: php mysql

我在数据库领域有点新鲜,并且在我的工作中遇到了数据库中应该是DATETIME,或者TIMESTAMP,或者与日期相关的任何内容的每一列都是VARCHAR(250)例如:201610251557。

我的问题是,有一种方法,将列更改为日期,而不会丢失其中的值?

我已经尝试更改列结构,但它将每个值更改为0000-00-00 00-00。

3 个答案:

答案 0 :(得分:3)

你可以看看str_to_date;它的运作方式如下:

func notNil(objectOrNil: AnyObject?) -> Bool {
    guard let object: AnyObject = objectOrNil,
        object as! _OptionalNilComparisonType != AnyObject?.none else {
        return false
    }
    if object is NSNull {
        return false
    }
    //if object.classForCoder == NSNull.classForCoder() {
    //  return false
    //}
    // TODO: how to check for? Optional(_SwiftValue)
    print("class for coder: \(object.classForCoder)")
    return true
}

使用iso格式的输出,也许您可​​以像这样更新列:

SELECT STR_TO_DATE('201610251557', '%Y%m%d%H%i');

答案 1 :(得分:1)

最安全的情况是:

  1. 添加一个类型正确的新字段
  2. 更新数据,直到使用适当的所有行数据填充新字段
  3. (可选)删除(或为归档目的重命名)旧字段
  4. (可选)将新字段重命名为原始字段的名称

答案 2 :(得分:1)

您可以使用str_to_date()函数创建另一个表,然后删除之前重命名的新表格或将其恢复为原始值