日期中的Oracle周数

时间:2016-05-19 12:15:59

标签: sql oracle date date-arithmetic infomaker

我是Oracle的新手。我已经找到了我需要的大部分内容但是一个领域让我非常疯狂。看起来它应该很简单,但我认为我的大脑是油炸的,我只是无法理解它。我正在尝试制作销售报告。我根据发票日期做各种疯狂的事情。我需要做的最后一件事是能够创建一个周数,以便我可以报告每周销售年份与年份。出于本报告的目的,我的财政年度恰好在每年的12月1日开始(无论一周中的哪一天)。例如,12月1日至7日将是第1周,等等。我可以使用各种功能获得周数,但所有功能都基于日历年或ISO周。如何轻松生成一个字段,该字段将为我提供自12月1日以来的周数?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

忘记默认的周数格式,因为这不符合此特定要求。我可能会从发票日期减去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;