【发布时间】:2019-01-02 14:05:00
【问题描述】:
在 SQL Server 中,我试图获取给定日期的周数(带有年份),欧洲风格,所以我使用 DATEPART 和 ISO_WEEK 参数:
SELECT CAST(DATEPART(year, myDate) AS VARCHAR) + RIGHT('0' + CAST(DATEPART(ISO_WEEK, myDate) AS VARCHAR), 2);
这很好用,除了 2018 年 12 月 31 日,它是 2019 年的第一周,但由于我在一年和一周分别使用 DATEPART,这显然行不通。以下是 myDate 为 31-12-2018 的示例:
SELECT CAST(DATEPART(year, '31-12-2018') AS VARCHAR) + RIGHT('0' + CAST(DATEPART(ISO_WEEK, '31-12-2018') AS VARCHAR), 2);
上述查询返回“201801”。
有没有办法简单地获得 2018 年 12 月 31 日的 201901,而无需明确测试该日期?
【问题讨论】:
-
你要的是不存在的
ISO_YEAR,所以I'd use this work around或者类似的逻辑
标签: sql-server tsql