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

时间:2018-02-02 20:06:02

标签: sql sql-server tsql ssrs-2012

我正在尝试使用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

4 个答案:

答案 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)