我正在尝试使用charindex从字符串数据格式化mm / dd / yyyy中的日期,字符串中的日期是yyyymmdd。我尝试过使用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
答案 0 :(得分:1)
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>
答案 1 :(得分:0)
看起来你想要这个:
CASE WHEN CHARINDEX ('^3507=', reg.BetaRequestString) = 0
THEN ''
ELSE CONVERT(VARCHAR(10),RIGHT(LEFT(reg.BetaRequestString, CHARINDEX ('^3507=', reg.BetaRequestString) + 13), 8), 101)
END
答案 2 :(得分:0)
当您知道输入日期格式时,您可以拆分部件并重新组织日期。
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 /二千零二分之三十零
答案 3 :(得分:0)
您还可以在转换功能中使用日期时间样式: https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql#date-and-time-styles
DECLARE @yyyymmdd sysname = '20180101'
SELECT CONVERT(sysname, CONVERT(datetime, @yyyymmdd, 112), 101)