2014-02-11 109 views
0

我有一个表tLogin字段dateAdded设置为一个VARCHAR。记录中的数据如下所示:如何从VARCHAR转换为DATE

2012-09-21 15:51:38 

由于数据存储为VARCHAR,因此我无法对其执行日期计算。

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

+0

我试过推荐,但没有一个工作。以下是一个示例错误消息:您的SQL语法中有错误; (VARCHAR(10),CONVERT(DATETIME,dateAdded),120)) FROM tLogin T'at line 2 – SimonRH

回答

1
update t set t.tempDate = cast(t.dateAdded as datetime) from tLogin t 

杰克先生建议,原代码从我:

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

你也应该提供你的初始化的MySQL服务器版本的手册所以他意识到,也许他不需要额外的专栏 –

0

只要日期/时间都在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