【问题标题】:Conver to ISO week to month date on SQL在 SQL 上将 ISO 周日期转换为月日期
【发布时间】:2018-03-22 00:44:50
【问题描述】:

我几乎搜索了所有问题,但没有找到我需要的东西,所以就这样吧:

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

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

【问题讨论】:

  • 为什么要201706?六月有几个星期?
  • 基本上,我想将 ISO 周“分组”为几个月。

标签: sql sql-server date iso week-number


【解决方案1】:

使用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 小提琴:http://sqlfiddle.com/#!6/00eaa/7/0

【讨论】:

  • 这是我见过的最好的方法,也是最优雅的方法!!感谢分享和节省大量不必要的代码!!!
【解决方案2】:

这对于输出来说有点奇怪,因为您可以获得相同的值超过 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-03
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2021-10-09
    • 2012-04-29
    相关资源
    最近更新 更多