SQL-запрос для сортировки текстовых данных MMM-YYYY в порядке возрастания - PullRequest
0 голосов
/ 11 апреля 2019

Определение таблицы:

CREATE TABLE [dbo].[Test]
(
    [MonthYear] [NVARCHAR](8) NULL
) ON [PRIMARY]

Текущие данные:

enter image description here

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

enter image description here

Я пробовал этот запрос:

SELECT 
    MonthYear, 
    CONVERT(VARCHAR(9), '01-' + MonthYear, 106) AS ConvertedDate 
FROM 
    dbo.Test
ORDER BY
    ConvertedDate

Результат этого запроса:

enter image description here

Ответы [ 4 ]

4 голосов
/ 11 апреля 2019

Вы, кажется, хотите:

SELECT MonthYear,
       CONVERT(DATE, '01-' + MonthYear) as ConvertedDate
FROM dbo.Test
ORDER BY ConvertedDate;

SQL Server неплохо умеет преобразовывать строки в даты без формата.

Примечание: вам не нужно включать преобразование в SELECT, поэтому:

SELECT MonthYear
FROM dbo.Test
ORDER BY CONVERT(DATE, '01-' + MonthYear);

Или, вы даже можете добавить это в таблицу:

ALTER TABLE Test
    ADD MonthYear_date as (CONVERT(DATE, '01-' + MonthYear));

Затем вы можете использовать MonthYear_date, как и любой другой столбец таблицы.

2 голосов
/ 11 апреля 2019

CAST будет работать строковое значение DATE

SELECT MonthYear, CAST(CONVERT(VARCHAR(9), '01-' + MonthYear ,106) AS DATE) AS ConvertedDate 
FROM dbo.Test
ORDER BY ConvertedDate

Выполнение образца с данными образца:

DECLARE @TestData TABLE (MonthYear VARCHAR (10));

INSERT INTO @TestData (MonthYear) VALUES
('May-19'), ('Jan-19'), ('Jun-19'), ('Feb-19');

SELECT MonthYear, CAST(CONVERT(VARCHAR(9), '01-' + MonthYear ,106) AS DATE) AS ConvertedDate 
FROM @TestData
ORDER BY ConvertedDate
0 голосов
/ 11 апреля 2019

Вам нужно CONVERT дата строки до ... date:

SELECT CONVERT(DATETIME, '01 ' + REPLACE(MonthYear, '-', ' '), 6) AS ConvertedDate
FROM ...
ORDER BY ConvertedDate
0 голосов
/ 11 апреля 2019

использование order by convert(nvarchar,[MonthYear],101)

select *, convert(nvarchar,[MonthYear],101) 
from [dbo].[Test]
order by convert(nvarchar,[MonthYear],101) 

выход Jan-19 май-19

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