подстрока для получения даты между двумя символами - PullRequest
0 голосов
/ 10 февраля 2020

Может ли кто-нибудь пролить свет на то, как я могу извлечь поле даты из этой строки ниже

'NA,Planning-Completed=17-07-2019 10:38,Print-Dispatch-Date=10-02-2020 13:06,Award-Complete=NA'

Ожидаемый результат:

10-02-2020

Это то, что я написал до сих пор, иногда это работает, но я заметил, что некоторые строки неверны.

[Dispatch Date] = SUBSTRING(dates,CHARINDEX('Print-Dispatch-Date=',dates) + LEN('Print-Dispatch-Date='), LEN(dates) )

1 Ответ

2 голосов
/ 10 февраля 2020

3-й параметр для SUBSTRING неверен. Он имеет значение LEN(dates), что означает возврат каждого символа после 'Print-Dispatch-Date='; в этом случае возвращается '10-02-2020 13:06,Award-Complete=NA'.

Поскольку ваша дата имеет длину 10 символов, просто используйте 10:

SELECT dates, SUBSTRING(dates,CHARINDEX('Print-Dispatch-Date=',dates) + LEN('Print-Dispatch-Date='), 10)
FROM (VALUES('NA,Planning-Completed=17-07-2019 10:38,Print-Dispatch-Date=10-02-2020 13:06,Award-Complete=NA'))V(dates)
...