Как рассматривать строку как месяц в SQL Server - PullRequest
0 голосов
/ 18 июля 2010

В моей базе данных есть таблица, в которой один из столбцов хранит joining_months в строковом формате, таком как январь, февраль, март .... (и т. Д.).

Теперь я хочузапустите SQL-запрос к этой таблице, чтобы получить те строки, в которых месяц присоединения находится до или после указанного пользователем месяца.

Что-то вроде:

select * from table1 where joining_month >or< 'March'

Как сравнить сохраненные месяцыв строковом формате, как это?

Пожалуйста, помогите!

Ответы [ 2 ]

3 голосов
/ 18 июля 2010

Я нашел этот довольно нестандартный способ сделать это на этой странице :

Еще один способ сделать это будет: ВЫБЕРИТЕ CHARINDEX (имя месяца, 'XXJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC') / 3 AS monthNumber

Вы можете изменить его, сначала извлекая первые 3 символа месяца из таблицы и сравнивая их с жестко закодированной строкой «XXJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC».Это должно сделать это.

Таким образом, ваш запрос может выглядеть примерно так:

   select CHARINDEX(substing(joining_month,1,3),'XXJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC')/3
            AS monthnumber, * 
            from table1 
            where monthnumber >or< 3
3 голосов
/ 18 июля 2010

У вас должен быть еще один столбец в таблице, в котором есть числовое значение месяца, связанного с именем, например, 1 для «января», 2 для «февраля» и т. Д.

Затем вы можете просто отфильтровать имя строки, сравнивая числовое значение.

Только будьте осторожны, прямое сравнение, подобное этому, работает, только если месяцы указаны в датах, относящихся к одному и тому же году. Если они в разные годы, то сравнивать месяцы бессмысленно, если не учитывать год.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...