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,太好了