繁体   English   中英

SQL:从星期码和年份获取月份名称

[英]SQL: Get the month name from weekcode and year

我有一个名为“ 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

您可以在下面尝试-使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM