首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过增加数来增加周数

如何通过增加数来增加周数
EN

Stack Overflow用户
提问于 2022-09-23 09:09:54
回答 2查看 36关注 0票数 0

我有一个表,其中包含字符串和数字中的周数。我想把数和一周,然后得到下一周。

例如,tableA

代码语言:javascript
运行
复制
week    num
2022-1  1
2022-3  3

输出

代码语言:javascript
运行
复制
week   num  new_week
2022-1  1  2022-2
2022-3  3  2022-6
2022-52 2  2023-2

因此,我将周转换为日期,将周添加到日期,最后将日期转换回周。然而,当我努力工作到每周,我有问题。下面的SQL是我正在使用的

代码语言:javascript
运行
复制
CONCAT(YEAR(DATEADD('week', num, date)), WEEK(DATEADD('week', num, date)))

我不使用日历年。由于我的一周从每年的第一个星期五开始,计算是不正确的。是否有可能避免将一周改为日期和日期改为一周?

EN

回答 2

Stack Overflow用户

发布于 2022-09-23 11:39:37

我写了一个小小的JS来做你的“一周”数学。如果12月31日是星期四,那一年就有53周了。好消息是,你不需要把你的“年度周”转换成日期。

代码语言:javascript
运行
复制
create or replace function addweeks( spcweek VARCHAR, num VARCHAR ) returns VARCHAR
  LANGUAGE JAVASCRIPT
AS
$$
    year = parseInt(SPCWEEK.substring( 0, 4 ));
    week = parseInt(SPCWEEK.substring( 5 ));
    week = week + parseInt(NUM);
    weekinyear = (new Date(year, 11, 31).getDay() == 4 ? 53 : 52);
    
    while (week > weekinyear ) {
        week = week - weekinyear;
        weekinyear = (new Date(year, 11, 31).getDay() == 4 ? 53 : 52);
        year ++;
    }
    return year + "-" + week;
$$
;

select myweek, num, addweeks( myweek, num) new_week
from mydata;

+---------+-----+----------+
| MYWEEK  | NUM | NEW_WEEK |
+---------+-----+----------+
| 2022-1  |   1 | 2022-2   |
| 2022-3  |   3 | 2022-6   |
| 2022-52 |   2 | 2023-2   |
| 2020-52 |   2 | 2021-1   |
+---------+-----+----------+

我认为如果在计算一年中的总周数时有错误,你可以纠正我的逻辑。

票数 1
EN

Stack Overflow用户

发布于 2022-09-23 09:24:26

只要稍微摆弄一下字符串,你就可以像这样计算。

代码语言:javascript
运行
复制
SELECT week, num, CONCAT( SUBSTRING(week FROM 1 for 5), num + SUBSTRING(week FROM INSTR(week, '-')+1))
FROM table;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73825473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档