SQL Server中解析和转换的区别

SQL Server中解析和转换的区别,sql,tsql,sql-server-2012,Sql,Tsql,Sql Server 2012,我有一个这样的问题 SELECT ISDATE('18 Mar 2016 18:57:35 GMT'); 当然,它返回0,因为字符串不是有效的日期格式,并且在运行时也是出于同样的原因 SELECT CONVERT(DATETIME, '18 Mar 2016 18:57:35 GMT') 我得到一个错误: 从字符串转换日期和/或时间时,转换失败 但我不明白的是,为什么我可以用PARSE函数做同样的事情 SELECT PARSE('18 Mar 2016 18:57:35 GMT' AS DA

我有一个这样的问题

SELECT ISDATE('18 Mar 2016 18:57:35 GMT');
当然,它返回0,因为字符串不是有效的日期格式,并且在运行时也是出于同样的原因

SELECT CONVERT(DATETIME, '18 Mar 2016 18:57:35 GMT')
我得到一个错误:

从字符串转换日期和/或时间时,转换失败

但我不明白的是,为什么我可以用PARSE函数做同样的事情

SELECT PARSE('18 Mar 2016 18:57:35 GMT' AS DATETIME )
我得到的结果是2016-03-1814:57:35.000


有谁能告诉我PARSE和CONVERT有什么不同,为什么我可以用PARSE而不是CONVERT运行查询?谢谢

解析函数在SQL Server 2012中是新的,并且使用.NET CLR-它不是本机T-SQL,而转换函数是本机T-SQL。使用PARSE函数时可能会有一些性能开销,这还取决于数据库服务器上是否存在.NET CLR

引自:

PARSE函数将成功转换字符串'Saturday,08 2013年6月的日期时间,但转换函数无法转换 相同的值。这就是PARSE函数尝试转换 将字符串值输入到请求的类型,但转换函数 要求输入字符串的格式完全相同,不允许有任何变化

查看文章以了解更多信息:

解析函数在SQL Server 2012中是新的,它使用.NET CLR-它不是本机T-SQL,而转换函数是本机T-SQL。使用PARSE函数时可能会有一些性能开销,这还取决于数据库服务器上是否存在.NET CLR

引自:

PARSE函数将成功转换字符串'Saturday,08 2013年6月的日期时间,但转换函数无法转换 相同的值。这就是PARSE函数尝试转换 将字符串值输入到请求的类型,但转换函数 要求输入字符串的格式完全相同,不允许有任何变化

查看文章以了解更多信息:

因为,此处无法使用CONVERT将GMT字符串转换为日期时间格式

因为,此处无法使用CONVERT将GMT字符串转换为日期时间格式。
DECLARE @DATE VARCHAR(30)='18 Mar 2016 18:57:35 GMT'
    SELECT  CONVERT(DATETIME,REPLACE(@DATE,'GMT',''))
    PRINT @DATE