带有 Msg 529 错误的 sqlserver 中的 CONVERT 问题

Ogg*_*ggu 2 sql sql-server-2008 sql-server-2012

select CONVERT(datetime,value,103) from results
Run Code Online (Sandbox Code Playgroud)

这个声明给了我一个错误

"Msg 529, Level 16, State 2, Line 1
Explicit conversion from data type text to datetime is not allowed."
Run Code Online (Sandbox Code Playgroud)

VALUE 列数据类型是 RESULTS 表中的 TEXT。

我怎样才能克服上述问题。请帮忙 !

Joe*_*ras 5

你不能转换textdatetime

您必须应用两个转换操作。

第一:从文本到varchar

第二种:从varchar到datetime

所以你的查询将变成:

SELECT CONVERT(datetime,
       CONVERT(varchar(30),value), 103)
FROM results
Run Code Online (Sandbox Code Playgroud)

另外:text新版本的 Sql Server 不推荐使用数据类型,因此我强烈建议您将数据类型(如果可以)更改textvarchar(max).

应用更改的 DDL 代码是:

ALTER TABLE results ALTER COLUMN value varchar(max)
Run Code Online (Sandbox Code Playgroud)