某个日期的Oracle周数



我是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;

最新更新