SQL: получить название месяца из кода недели и года - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть таблица с именем «tbl_TimeSheet» со столбцом WorkWeek и типом данных является nvarchar.

   [tbl_WorkWeek]
 1 |  47-2018
 2 |  36-2018
 3 |  1-2019

проблема в том, что я пытаюсь преобразовать первую цифру перед знаком "-" в месяц с именем имени и появляется сообщение об ошибке, говорящее "преобразование не удалось при преобразовании значения nvarchar '1-' втип данных int ".Я могу легко получить WorkYear, но не месяц.Я действительно не знаю, что делать с этим знаком "-".

Я действительно новичок в области баз данных и SQL.Любая помощь будет оценена.Спасибо!

Current Code: 

SELECT WorkWeek, 
RIGHT(WorkWeek, 4) AS [WorkYear],
DATENAME(month, DATEADD(week, LEFT(WorkWeek, 2) - 1, DATEADD(wk, 
DATEDIFF(wk, - 1, DATEADD(yy, DATEDIFF(yy, 0,  GETDATE()), 0)), 0))) AS 
[WorkMonth]  

FROM tbl_WorkWeek

Желаемый вывод:

     [WorkWeek] | [WorkMonth] |  [WorkYear]
     ---------------------------------------
   1 |  47-2018 |   November  |     2018
   2 |   1-2019 |   January   |     2019
   3 |  36-2018 |   September |     2018

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете попробовать ниже - используя charindex() and substring() функцию

SELECT WorkWeek, 
RIGHT(WorkWeek, 4) AS [WorkYear],
DATENAME(month, DATEADD(week, substring(WorkWeek,0,charindex('-',WorkWeek)) - 1, DATEADD(wk, 
DATEDIFF(wk, - 1, DATEADD(yy, DATEDIFF(yy, 0,  GETDATE()), 0)), 0))) AS 
[WorkMonth]  
FROM tbl_WorkWeek
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...