Mysql 如何将VARCHAR转换为日期

Mysql 如何将VARCHAR转换为日期,mysql,sql,Mysql,Sql,我有一个表tLogin,其字段dateAdded设置为VARCHAR。记录中的数据如下所示: 2012-09-21 15:51:38 因为数据存储为VARCHAR,所以我无法对其执行日期计算 我想通过创建一个设置为日期的新字段tempDate来解决这个问题,并将数据从dateAdded转换为tempDate字段。 如何将DateAdd中的所有数据复制到tempDate中?我不介意在从DateAdd转换时损失小时、分钟和秒 update t set t.tempDate = cast(t.dat

我有一个表tLogin,其字段dateAdded设置为VARCHAR。记录中的数据如下所示:

2012-09-21 15:51:38
因为数据存储为VARCHAR,所以我无法对其执行日期计算

我想通过创建一个设置为日期的新字段tempDate来解决这个问题,并将数据从dateAdded转换为tempDate字段。 如何将DateAdd中的所有数据复制到tempDate中?我不介意在从DateAdd转换时损失小时、分钟和秒

update t set t.tempDate = cast(t.dateAdded as datetime) from tLogin t
正如杰克先生所说,我的原始代码是:

select cast('2012-09-21 15:51:38' as datetime)

只要日期/时间都在varchar字段中,您就可以简单地使用:

SELECT CONVERT(DATETIME, dateAdded) 
FROM tLogin
如果要去除时间戳,可以执行以下操作:

SELECT CONVERT(DATE,CONVERT(VARCHAR(10),CONVERT(DATETIME,dateAdded),120)) 
FROM tLogin
作为更新:

UPDATE T 
SET tempDate = CONVERT(DATE,CONVERT(VARCHAR(10),CONVERT(DATETIME,dateAdded),120)) 
FROM tLogin T

你也应该提供你的初步建议,让他意识到也许他不需要额外的专栏。我尝试了这个建议,但没有一个奏效。下面是一个示例错误消息:您的SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以了解第2行中tLogin T的CONVERT(VARCHAR(10),CONVERT(DATETIME,dateAdded),120))附近使用的正确语法