Sql 是否将字符串转换为此特定日期格式?

Sql 是否将字符串转换为此特定日期格式?,sql,sql-server,tsql,datetime,nvarchar,Sql,Sql Server,Tsql,Datetime,Nvarchar,我使用的是SQL Server 2014,我有一个表(t1),其中包含nvarchar格式的列(ReviewDate) 该列的一行示例如下所示: ReviewDate Mr John wrote a review in Oct 2017 我需要从这个字符串中提取“日期”组件 为此,我的T-SQL如下所示: SELECT (RIGHT([ReviewDate], 8)) as [ReviewDate 2] FROM t1 这给了我“2017年10月” 现在,我想将“2017年

我使用的是
SQL Server 2014
,我有一个表(t1),其中包含
nvarchar
格式的列(ReviewDate)

该列的一行示例如下所示:

       ReviewDate
  Mr John wrote a review in Oct 2017
我需要从这个字符串中提取“日期”组件

为此,我的T-SQL如下所示:

SELECT (RIGHT([ReviewDate], 8)) as [ReviewDate 2]
FROM t1
这给了我“2017年10月”

现在,我想将“2017年10月”转换为“
2017-10-01
”,作为
datetime
格式。这就是我被困的地方

我尝试了以下方法:

SELECT CONVERT(datetime, (RIGHT([ReviewDate], 8)), 121) as [ReviewDate2]
上面的语法给出了以下错误消息:“从字符串转换日期和/或时间时,转换失败。”

以上语法给出了相同的错误消息:

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

SELECT CAST( (RIGHT([ReviewDate], 8)) as datetime) as [ReviewDate2]

非常感谢您的帮助。

到目前为止,当我尝试强制转换时,您的示例文本在mssql中是有效的日期时间。您的表上似乎有一些无效数据。尝试使用
try\u cast()
包含这些无效数据

declare @ReviewDate varchar(max)='Mr John wrote a review in Oct 2017'

set  @ReviewDate = (RIGHT(@ReviewDate, 8))

select try_cast(@ReviewDate as datetime) as [ReviewDate2]

到目前为止,当我尝试强制转换时,您的示例文本在mssql中是有效的日期时间。您的表上似乎有一些无效数据。尝试使用
try\u cast()
包含这些无效数据

declare @ReviewDate varchar(max)='Mr John wrote a review in Oct 2017'

set  @ReviewDate = (RIGHT(@ReviewDate, 8))

select try_cast(@ReviewDate as datetime) as [ReviewDate2]

您所有的查询都是正确的,但请确保,除了日期部分之外,它不应有任何其他字符串

选择CAST('2017年10月x日'为日期)
会给您带来如下错误

从字符转换日期和/或时间时转换失败 绳子


您的所有查询都是正确的,但请确保除了日期部分之外,它不应有任何其他字符串

选择CAST('2017年10月x日'为日期)
会给您带来如下错误

从字符转换日期和/或时间时转换失败 绳子


这里有一个提示。尝试从表名中选择ReviewDate,其中IsDate(右([ReviewDate],8))=0这里有一个提示。尝试从表名中选择ReviewDate,其中IsDate(右([ReviewDate],8))=0try\u cast起作用。我在那个专栏里有一些无效的字符@用户3115933,greattry_演员表演了这个把戏。我在那个专栏里有一些无效的字符@用户3115933,太好了