【问题标题】:Extract Week of Fiscal year from Date ORACLE SQL从日期 ORACLE SQL 中提取会计年度的周
【发布时间】:2020-04-27 09:02:12
【问题描述】:

我的财政年度从 7 月 1 日到 6 月 30 日开始。我想从财政年度开始计算一年的周数。 第 1 周,第 2 周 第 3 周...第 52 周等

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    以下将为您提供 number 数据类型中的周数

    to_number(to_char(to_date('07/01/2019','MM/DD/YYYY'),'WW')) as week_num
    

    如果您想要基于 ISO 标准的一周,请使用以下内容

    to_number(to_char(to_date('07/01/2019','MM/DD/YYYY'),'IW')) as week_num
    

    【讨论】:

    • 这并不能回答问题,因为 OP 已经明确表示他的fiscal year starts from 1st july to 30 June。您的查询会将 1 月 1 日视为第 1 周的开始。
    • 我有一个日期列代替固定日期和财政年度从 7 月 1 日开始
    【解决方案2】:

    试试这个:

    FLOOR(theDate - TO_DATE('07/01/2019','MM/DD/YYYY')) / 7) + 1 AS FISCAL_WEEK
    

    其中theDate 是介于 07/01/2019 和 06/30/2020 之间的日期。

    【讨论】:

    • 但它给出的是 53 而不是 52
    • 52 周 * 7 天/周 = 364 天
    【解决方案3】:

    你可以使用条件逻辑:

    select (case when extract(month from sysdate) < 7
                 then floor((sysdate - trunc(sysdate, 'YYYY')) / 7) + 1
                 else floor((sysdate - (trunc(sysdate, 'YYYY') + interval '6' month))/7) + 1
            end) as fiscal_week
    

    这使用sysdate 来表示日期。当然,您可以将其替换为您的日期列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多