SQL: Order Month_year в порядке даты - PullRequest
2 голосов
/ 22 марта 2019

У меня есть данные, которые

Monthyear (varchar)       Value
Jan 2019                   55
Feb 2019                   66
Jan 2020                   78
Feb 2020                   45

, когда я выбираю вышеупомянутое утверждение как

select * from datatable order by Monthyear

результат на самом деле дает мне

 Monthyear (varchar)       Value
    Feb 2019                   66
    Feb 2020                   45
    Jan 2019                   55
    Jan 2020                   78

НоЯ хочу это в порядке месяца года.Как мне решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 22 марта 2019

Вы должны хранить «месяц-год» как дату (первую дату месяца) или использовать строку для сортировки («2019-01»).

Однако SQL Server довольно хорошо преобразует строки в даты, поэтому вы можете использовать:

order by convert(date, MonthYear)

Это будет конвертировать по дате, которую вы хотите.

На самом деле, вы можете добавить это в таблицу. Скажи:

alter table datatable add yyyymm as (convert(date, MonthYear));

Вы можете даже сохранить это и добавить индекс, если в таблице много данных.

1 голос
/ 22 марта 2019

Вы также можете использовать CAST для этого.

SELECT *
FROM   datatable
ORDER  BY Cast(monthyear AS DATE)  

Результат

+-----------+-------+
| Monthyear | Value |
+-----------+-------+
| Jan 2019  |    55 |
| Feb 2019  |    66 |
| Jan 2020  |    78 |
| Feb 2020  |    45 |
+-----------+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...