获取查询日期往前推26个每个周五的日期

DB2获取查询日期往前推26个每个周五的日期

JackTang 发布于 2022-4-14 15:11 (编辑于 2022-4-14 15:36)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
Z4u3z1Lv6专家互助
发布于2022-4-14 15:14(编辑于 2022-4-14 15:45)

DB2的函数写不来

但可以用帆软函数  把today()改成你的查询日期就行了

DATEDELTA(DATEINWEEK(TODAY(),5),-182)

image.png

补充

MAPARRAY(range(DATEDELTA(DATEINWEEK(TODAY(),5),-182),DATEINWEEK(TODAY(),5),7),FORMAT(ITEM,'yyyy-MM-dd'))

image.png

  • JackTang JackTang(提问者) 我完善了一下问题,应该是26个每个周五的日期
    2022-04-14 15:37 
  • Z4u3z1 Z4u3z1 回复 JackTang(提问者) 补充了
    2022-04-14 15:45 
最佳回答
0
plarmyLv5见习互助
发布于2022-4-14 15:14
用日期函数
最佳回答
0
用户z3757119Lv4见习互助
发布于2022-4-16 06:48
用快速计算应该就可以,首先日期转换成“年周数”过滤“前26”周:然后将日期转换成“星期”,过滤“5”就可以。 如果需要用户自定义星期,建议通过SQL对日期列进行星期计算,在仪表板增加“星期”查询条件。
最佳回答
0
JackTangLv5初级互助
发布于2022-4-16 17:10

SELECT 

    TO_CHAR(TO_DATE('2022-04-13','YYYY-MM-DD') -T1.NUM,'YYYYMMDD') DT_SNAP

FROM 

    SYSIBM.DUAL,

    (

    SELECT 

        NUM

    FROM (

        SELECT 

            ROW_NUMBER() OVER(ORDER BY (VALUES 1)) AS NUM

        FROM 

            SYSIBM.SYSDUMMY1,

            SYSIBM.SYSCOLUMNS

        FETCH FIRST 182 ROWS ONLY

    ) T

UNION ALL

    SELECT 0 AS NUM FROM SYSIBM.DUAL

)T1

WHERE 

    DAYNAME(TO_CHAR(TO_DATE('2022-04-13','YYYY-MM-DD') -T1.NUM,'YYYY-MM-DD')) = 'Friday'

ORDER BY 

    DT_SNAP DESC

LIMIT 26

  • 0关注人数
  • 520浏览人数
  • 最后回答于:2022-4-16 17:10
    请选择关闭问题的原因
    确定 取消
    返回顶部