Как преобразовать строку 1012020 в дату 01.01.2020 в SQL Server? - PullRequest
0 голосов
/ 01 февраля 2020

Как преобразовать строку 1012020 в дату 1/01/2020 в SQL Сервер?

Вам действительно тяжело с этим.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Вы можете использовать SUBSTRING для достижения этого. Demo on db <> fiddle Синтаксис

SUBSTRING (строка, начало, длина)

  • Использовать Вправо () , чтобы получить 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
0 голосов
/ 01 февраля 2020

Попробуйте, в вашей строке отсутствует первая буква "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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...