2012-01-09 3 views
0

Я пытаюсь получить дату из этого VARCHAR (512) колонка:Как получить среднюю часть строки?

CAM; Initial period payment ($3249.58) 01/01/2012 - 01/31/2012; INITIAL Pmt. 

Глядя вернуть значение 01/01/2012 как «Дата начала» и 01/31/2012 как «Дата окончания».

Я читал о вещах и parsename, но я довольно новичок в sql и чувствую, что я просто запутался.

+1

Вы упомянули SQL, так что вы пытаетесь извлечь с помощью SQL-конструкций или можете сделать это впоследствии на уровне приложения? Если SQL, с каким продуктом базы данных вы работаете? –

+0

В какой базе данных мы говорим, и каков тип данных столбца с текстом в нем? –

+0

[SQL Server BooksOnLine] (http://msdn.microsoft.com/en-us/library/ms130214.aspx) имеет много возможностей для новичка, а также для продвинутого пользователя/разработчика/администратора баз данных. [Эта конкретная страница] (http://msdn.microsoft.com/en-us/library/ms181984.aspx), например, перечислены все строковые функции, поддерживаемые текущей версией SQL Server, со ссылками на их соответствующие страницы руководства , –

ответ

0

К сожалению, SUBSTRING операции в SQL всегда хрупкие. Вот что-то, что будет работать, если все ваши строки-кандидаты будут отформатированы аналогично. Я уверен, что вы улучшить его какой-то с небольшим количеством проб и ошибок:

DECLARE @str varchar(1000) = 'CAM; Initial period payment ($3249.58) 01/01/2012 - 01/31/2012; INITIAL Pmt.' 

SELECT 
    CONVERT(date, SUBSTRING(@str, CHARINDEX(')', @str) + 2, 10)) StartDate, 
    CONVERT(date, SUBSTRING(@str, CHARINDEX('-', @str, CHARINDEX(')', @str, 12)) + 2, 10)) EndDate 

Вы могли бы заменить использование переменной @str с выбором из реальной таблицы.

+0

Извините, что вы расплывчаты. Я работаю с SQL Server 2008 R2, а тип данных - varchar (512) и пытается сделать это в представлении. –

+0

Phil, это отлично подходит для получения даты. Мне нужно посмотреть, как я могу включить это в представление, поэтому я оставлю это открытым еще немного. –

+0

@PeterUrbina: вы можете подумать о том, чтобы сделать это как вычисленный столбец – NotMe

Смежные вопросы