在 SQL 将 ISO 周日期转换为月日期

Conver to ISO week to month date on SQL

我几乎搜索了每个问题,但没有找到我需要的,所以这里是:

我需要将格式为 'yyyyww' 的日期(其中 'ww' 是一年中的第几周)转换为 'yyyymm'(其中 'mm' 是一年中的月份)。

因此,例如,我将日期 201725(即 2017 年,ISO 第 25 周)显示为 201706,因为 ISO 第 25 周是在同年的 6 月。

这对于输出来说有点奇怪,因为您可以在超过 1 周的时间内获得相同的值,但我会把它留给您来解决。

这会为所提供的输入生成所需的输出。

declare @YourValue varchar(10) = '201725'

select left(replace(convert(varchar(10), dateadd(week, convert(int, right(@YourValue, 2)), left(@YourValue, 4) + '0101'), 102), '.', ''), 6)

结合使用 LEFTCONVERTDATEADD 函数。

SELECT LEFT(CONVERT(varchar, DATEADD(week, yourfield % 100 - 1, DATEADD(year, yourfield / 100 - 1900, 0)),112),6)
FROM yourtable

输入

201722
201733
201725

输出

201705
201708
201706

SQL Fiddle: http://sqlfiddle.com/#!6/00eaa/7/0