SQL 服务器:从 VARCHAR 转换为 DATETIME

SQL Server : Convert from VARCHAR to DATETIME

当前日期格式:12-18-2018-03:14:48

我要转换为:2018-12-18 03:14

目前正在使用 SQL Server 2008

我使用的代码语法是:

DECLARE @input VARCHAR(35) = '12-18-2018-03:14:48'

SELECT CONVERT(DATETIME, @input, 120)

错误:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value

请帮忙。谢谢!

我不确定您当前的日期时间文字是否属于 SQL 服务器可以识别的任何掩码。但是我们可以在这里尝试使用 TRY_CONVERT,将中间的破折号替换为 space:

SELECT TRY_CONVERT(datetime, STUFF(@input, 11, 1, ' ')) AS output;

18/12/2018 03:14:48

Demo

编辑:

如果您使用的是不支持 TRY_CONVERT 的 SQL 服务器的早期版本,那么我们可以尝试明确使用 CONVERT:

SELECT CONVERT(datetime, STUFF(@input, 11, 1, ' ')) AS output;