Оператор SQL Преобразуйте его в 1 в январь, 2 в февраль и т. д.

Как вы видели на изображении ниже, месяц теперь равен 1 и 2. Как я могу преобразовать его из 1 в январь, 2 в февраль и так далее. Ниже мой sql.

Помощь будет оценена. Заранее спасибо! :)

введите здесь описание изображения

SELECT DISTINCT fbmenuname, 
                Sum(quantity)                        AS ordercount, 
                Month(Str_to_date(date, '%d/%m/%Y')) AS month 
FROM   fb.fborders 
       INNER JOIN fb.fbmenu 
               ON fborders.fbmenuid = fbmenu.fbmenuid 
   INNER JOIN fb.fbrestaurant 
               ON fbrestaurant.fbrestaurantid = fbmenu.fbrestaurantid 
WHERE  fborders.status = 'completed' 
       AND ( Year(Str_to_date(date, '%d/%m/%Y')) = '2013' 
             AND fbrestaurant.fbrestaurantid = 'R0001' ) 
GROUP  BY fbmenuname, 
          Month(Str_to_date(date, '%d/%m/%Y')) 

person newbieinjavaversion2    schedule 28.01.2014    source источник
comment
вам нужен Jan в операторе Update или операторе Select   -  person HarshSharma    schedule 28.01.2014
comment
Если вы используете SQL Server, вы можете использовать UPDATE и DATENAME(MONTH, 1)   -  person Darren    schedule 28.01.2014


Ответы (5)


Как указано в этом другом ответе:

Вы можете использовать STR_TO_DATE() чтобы преобразовать число в дату, а затем обратно с помощью MONTHNAME()

SELECT MONTHNAME(STR_TO_DATE(6, '%m'));

+---------------------------------+
| MONTHNAME(STR_TO_DATE(6, '%m')) |
+---------------------------------+
| June                            |
+---------------------------------+

Используйте функцию Left для обрезки нежелательного символа.

Так что попробуй это

SELECT DISTINCT fbmenuname, 
                Sum(quantity) 
                AS ordercount, 
                Month(Str_to_date(date, '%d/%m/%Y')) 
                AS month, 
                Monthname(Str_to_date(Month(Str_to_date(date, '%d/%m/%Y')), '%m' 
                          )) AS MonthName 
FROM   fb.fborders 
       INNER JOIN fb.fbmenu 
               ON fborders.fbmenuid = fbmenu.fbmenuid 
       INNER JOIN fb.fbrestaurant 
               ON fbrestaurant.fbrestaurantid = fbmenu.fbrestaurantid 
WHERE  fborders.status = 'completed' 
       AND ( Year(Str_to_date(date, '%d/%m/%Y')) = '2013' 
             AND fbrestaurant.fbrestaurantid = 'R0001' ) 
GROUP  BY fbmenuname, 
          Month(Str_to_date(date, '%d/%m/%Y')) 

FIDDLE

person Vignesh Kumar A    schedule 28.01.2014

Предполагая, что столбец Month имеет значение int, вы можете попробовать выполнить следующий запрос

UPDATE fborders
SET month=month+1
where month<12

Этот запрос не будет обновлять месяц DEC, так как месяц = ​​13 не существует.

person Akshay    schedule 28.01.2014

Вы можете написать SQL-запрос, например:

SELECT DISTINCT fbmenuname, 
                Sum(quantity) 
                AS ordercount, 
                Datename(month, Dateadd(month, Month( 
                                Str_to_date(date, '%d/%m/%Y')), 0) - 1) AS 
                month 
FROM   fb.fborders 
       INNER JOIN fb.fbmenu 
               ON fborders.fbmenuid = fbmenu.fbmenuid 
       INNER JOIN fb.fbrestaurant 
               ON fbrestaurant.fbrestaurantid = fbmenu.fbrestaurantid 
WHERE  fborders.status = 'completed' 
       AND ( Year(Str_to_date(date, '%d/%m/%Y')) = '2013' 
             AND fbrestaurant.fbrestaurantid = 'R0001' ) 
GROUP  BY fbmenuname, 
          Month(Str_to_date(date, '%d/%m/%Y')) 

Надеюсь, поможет..

person Vasant PADHIYAR    schedule 28.01.2014

Предположим, вы используете MSSQL, тогда запрос для того же будет:

 SELECT DATENAME(month, 1)
 FROM fborders

и остальную часть вашего запроса, вы можете использовать его либо в предложении Update, либо в предложении Select.

person HarshSharma    schedule 28.01.2014

объявить @intMonth int SET @intMonth=9

ВЫБРАТЬ ПОДСТРОКУ('ЯНВ ФЕВ МАР АПР МАЙ ИЮН ИЮЛ АВГ СЕН ОКТ НОЯБРЬ ДЕК ', (3 * 4) - 3, 3) ВЫБРАТЬ ПОДСТРОКУ('ЯНВ ФЕВ МАР АПР МАЙ ИЮН ИЮЛ АВГ СЕН ОКТ НОЯБРЬ ДЕК ', (@intMonth * 4) - 3, 3)

person santhoush sankar    schedule 27.08.2017