日期中的 Oracle 周数

Oracle Week Number from a Date

我是 Oracle 的新手。我已经弄清楚了大部分我需要的东西,但有一个领域让我发疯。看起来应该很简单,但我觉得我的大脑被炸了,我就是无法理解它。我正在尝试生成销售报告。我正在根据发票日期做各种疯狂的事情。我需要做的最后一件事是能够创建一个周数,这样我就可以报告年度与年度的每周销售情况。出于本报告的目的,我的财政年度恰好从每年的 12 月 1 日开始(无论它是星期几)。例如,12 月 1 日至 7 日将是第 1 周,等等。我可以使用各种函数获取周数,但所有函数都基于日历年或 ISO 周。我怎样才能轻松生成一个字段,该字段会给出自 12 月 1 日以来的周数?非常感谢您的帮助。

忘记默认的周数格式,因为它不适用于此特定要求。我可能会从发票日期中减去之前的 12 月 1 日,然后除以 7。四舍五入,加 1,应该没问题。

select floor(
  (
  trunc(invoiceDate) - 
  case 
  -- if December is current month, than use 1st of this month
  when to_char(invoiceDate, 'MM') = '12' then trunc(invoiceDate, 'MM')
  -- else, use 1st December of previous year
  else add_months(trunc(invoiceDate, 'YYYY'), -1)
  end
  ) / 7
) + 1
from dual;