Sql server SQL Server日期转换问题

Sql server SQL Server日期转换问题,sql-server,Sql Server,我有一张以这种格式显示日期的表格。YYYYDDD 我需要将它们转换为YYYY-MM格式 例如,我有一个日期2016003,所以应该变成2016-01 同样地,2016055的日期应变为2016-02 有没有一种方法可以在不创建用户函数的情况下显示这些内容 谢谢我认为最简单的方法是在年初加上天数。因此,要获得日期: select dateadd(day, cast(right(col, 3) as int) - 1, cast(left(col, 4) + '01-0

我有一张以这种格式显示日期的表格。YYYYDDD

我需要将它们转换为YYYY-MM格式

例如,我有一个日期
2016003
,所以应该变成
2016-01

同样地,
2016055
的日期应变为
2016-02

有没有一种方法可以在不创建用户函数的情况下显示这些内容


谢谢

我认为最简单的方法是在年初加上天数。因此,要获得日期:

select dateadd(day, cast(right(col, 3) as int) - 1,
               cast(left(col, 4) + '01-01' as date)
              ) as dte
然后可以根据需要格式化它。例如,在SQL Server 2012+中,可以使用
format()


请记住,当前表中的不是日期。它们是代表日期的数字。如果可能,您应该停止将日期信息存储为数字或字符串。它们应存储为日期或日期时间。这会让你的生活变得不那么痛苦。
select format(dateadd(day, cast(right(col, 3) as int) - 1,
                      cast(left(col, 4) + '01-01' as date)
                     ), 'YYYYMM'
              ) as yyyymm