我的表格中有一个YYWW
格式的列。我需要转换此YYWW
并获取星期一的日期。
例如:
Input YYWW: 1847
Expected Output: 2018-11-19 [Monday's date in 2018 Week 47]
预先感谢
我尝试了以下操作,但无法正常工作
declare @value int = 1519
SELECT CONVERT(VARCHAR(10), DATEADD(YEAR, 2000 + @value / 100-1900, 7 * (@value % 100)-7), 105);
1851 -Expected 17-12-2018[Monday] Works fine for this year 2018
1752 -Expected 25-12-2017[Monday] but shows 24-12-2017 [Sunday]
1652 -Expected 26-12-2016 [Monday] but shows 24-12-2016 [Saturday]
1519 -Expected 04-05-2015 [Monday] but shows 07-05-2015 [Thursday]
答案 0 :(得分:1)
尝试一下:
DECLARE @t table(YYWW char(4))
INSERT @t values('1847'),('1752'),('1652'),('1519')
SELECT
CAST(DATEADD(wk,RIGHT(YYWW,2)+DATEDIFF(d,0,DATEADD(
d,-4,LEFT(YYWW,2)+'0101'))/7,0) as date)
FROM @t
结果:
2018-11-19
2017-12-25
2016-12-26
2015-05-04
编辑:
要获取所需的格式DD-MM-YYYY:
SELECT
CONVERT(CHAR(10),DATEADD(wk,RIGHT(YYWW,2)+DATEDIFF(d,0,DATEADD(
d,-4,LEFT(YYWW,2)+'0101'))/7,0),105)
FROM @t
答案 1 :(得分:1)
我个人会使用calendar table。然后您可以执行以下操作:
.select_row{
color: #43B149;
font-weight: bolder !important;
background: #e4e5e6 !important;
box-shadow: 1px 0px 1px 0px #cad6ce !important;
-moz-box-shadow:1px 0px 1px 0px #cad6ce !important;
-webkit-box-shadow:1px 0px 1px 0px #cad6ce !important;
transform: scale(1);
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
td{box-shadow: 0px 3px 0px 0px #cad6ce !important;
-moz-box-shadow:0px 3px 0px 0px #cad6ce !important;
-webkit-box-shadow:0px 3px 0px 0px #cad6ce !important;
background: #e4e5e6 !important;
}
}
.table-forecast{
border-collapse: separate;
border-spacing: 0px;
}
答案 2 :(得分:0)
我认为您的计算可能会在2018年第47周的2018年11月26日(星期一)开始。
在任何情况下,如果您不同意以下内容,只需从星期数中减去1,便可以使用
DECLARE @Date date
DECLARE @Year int = 2000 +18
declare @week int = 47
SET @Date = DATEADD(YEAR, @Year - 1900, 0)
SELECT dateadd(ww,@week-1,DATEADD(DAY, (@@DATEFIRST - DATEPART(WEEKDAY, @Date) + (8 - @@DATEFIRST) * 2) % 7, @Date))