需要使用charindex从字符串格式化SQL中的日期

需要使用charindex从字符串格式化SQL中的日期,sql,sql-server,tsql,ssrs-2012,Sql,Sql Server,Tsql,Ssrs 2012,我正在尝试使用charindex从字符串数据格式化mm/dd/yyyy格式的日期,字符串中的日期是yyyyymmdd。我试过使用convert、cast、castconvert 如果有人能帮忙,那就太好了!我有示例代码 CONVERT ( VARCHAR (10) , CASE WHEN CHARINDEX ('^3507=', reg.BetaReque

我正在尝试使用charindex从字符串数据格式化mm/dd/yyyy格式的日期,字符串中的日期是yyyyymmdd。我试过使用convert、cast、castconvert

如果有人能帮忙,那就太好了!我有示例代码

CONVERT (
                       VARCHAR (10)
                     , CASE
                           WHEN CHARINDEX ('^3507=', reg.BetaRequestString) = 0 THEN
                               ''
                           ELSE
                               RIGHT(LEFT(reg.BetaRequestString, CHARINDEX ('^3507=', reg.BetaRequestString) + 13), 8)
                       END
                     , 101

您似乎想要这样:

CASE WHEN CHARINDEX ('^3507=', reg.BetaRequestString) = 0 
     THEN ''
     ELSE CONVERT(VARCHAR(10),RIGHT(LEFT(reg.BetaRequestString, CHARINDEX ('^3507=', reg.BetaRequestString) + 13), 8), 101)
END

知道输入日期格式后,可以拆分零件并重新组织日期

declare @date varchar(100)='20021230' , 
 @Year int,@month int ,@day int

select @year=Substring(@date,1,4) ,@month=SUBSTRING(@date,5,2),@day=SUBSTRING(@date,7,2)

select convert(VARCHAR(10),(DATEFROMPARTS(@year,@month,@day)),101)
产出-12/30/2002


您还可以在转换函数中使用datetime样式:


你能提供样本数据吗?不清楚转换的格式是什么,转换的格式是什么,将日期存储在Datetime列中。如果我不知道日期本身,字符串中的格式总是一样的。虽然这段代码只能回答这个问题,但请解释一下为什么会这样做。这将帮助未来的用户评估他们的情况的答案。如果我不知道日期本身,这仍然有效吗字符串中的格式始终是sameYes,它将有效。。。您的日期是否存储在表列中?
declare @a nvarchar(10)
set @a='20180203'
select 
convert(nvarchar(10),substring(@a,5,2)+'/'+substring(@a,7,2)+'/'
+substring(@a,1,4),101)
DECLARE @yyyymmdd sysname = '20180101'
SELECT CONVERT(sysname, CONVERT(datetime, @yyyymmdd, 112), 101)