преобразование даты в сокращенном формате строки в формат даты в MySQL

0

У меня есть таблица, состоящая из 2 столбцов: id и month_year

id  month_year 

1   Dec 2016
2   Jan 2017
3   Feb 2017
4   Mar 2017
.
...
.......

Мне нужен результат, состоящий из формата даты, такого как следующий

        id  month_year 

        1   2016-12-01
        2   2017-01-01
        3   2017-02-01
        4   2017-03-01
        ..
        ....
        ......

      (We can assume the date to be 1st)

Я мог бы добиться этого с помощью hardcoding it

 SELECT id , case when a.month_year = 'Dec 2016' THEN 
 STR_TO_DATE('01/12/2016','%d/%m/%Y')
 when a.month_year = 'Jan 2017' THEN 
 STR_TO_DATE('01/1/2017','%d/%m/%Y')
 when a.month_year = 'Feb 2017' THEN  
STR_TO_DATE('01/2/2017','%d/%m/%Y')
 when a.month_year = 'Mar 2017' THEN  
STR_TO_DATE('01/3/2017','%d/%m/%Y')
 end as month_year from [table] a 

НО Я хочу БЕЗ ХАРКОДИРОВАНИЯ, когда новые данные приходят, этот запрос не работает. Как я могу продолжить?

Теги:
datetime
date

2 ответа

0
Лучший ответ

Например:

SELECT STR_TO_DATE(CONCAT('Dec 2016','01'),'%b %Y %d');
+-------------------------------------------------+
| STR_TO_DATE(CONCAT('Dec 2016','01'),'%b %Y %d') |
+-------------------------------------------------+
| 2016-12-01                                      |
+-------------------------------------------------+
0
SELECT DATE_FORMAT(STR_TO_DATE('Dec 2017','%M %Y'), '01/%m/%Y');

Выход: 01/12/2017

Ещё вопросы

Сообщество Overcoder
Наверх
Меню