如何在SQL Server中将字符串1012020转换为日期1/01/2020?

时间:2020-02-01 02:56:15

标签: sql-server date

如何在SQL Server中将字符串1012020转换为日期1/01/2020

对此非常困难。

2 个答案:

答案 0 :(得分:0)

尝试一下,您的字符串在某个日期缺少第一个“ 0”字符,因此我添加了1行对其进行了修复:

DECLARE @yourdate VARCHAR(10)= '1012020'
SET @yourdate=RIGHT('0'+@yourdate,8)

SELECT CAST(SUBSTRING(@yourdate,5,4)+'-'+SUBSTRING(@yourdate,3,2)+'-'+SUBSTRING(@yourdate,1,2) AS DATE)

答案 1 :(得分:0)

您可以使用SUBSTRING来实现。 Demo on db<>fiddle 语法

SUBSTRING(字符串,开始,长度)

  • 使用Right()获取year。结果,@Year = RIGHT(@strDate, 4)
  • SUBSTRING()Len()结合使用可获得month。例如:

    • @strDate = '1012020',起始索引应为2
    • @strDate = '21012020',起始索引应为3

    ==>因此,我们有了@Month = SUBSTRING(@strDate, LEN(@strDate) - 5, 2)

  • @Day的长度应为长度@strDate的其余部分减去length of year is 4 + length of month is 2,因此,我们有了length = LEN(@strDate) - 6
DECLARE @strDate Varchar(20) = '1012020'
DECLARE @Year Varchar(4) = RIGHT(@strDate, 4),
         @Month Varchar(4) = SUBSTRING(@strDate, LEN(@strDate) - 5, 2),
          @Day Varchar(4) = LEFT(@strDate, LEN(@strDate) - 6)

SELECT @Day + '/' + @Month + '/' + @Year