季度计算 SQL 的周数

Posted

技术标签:

【中文标题】季度计算 SQL 的周数【英文标题】:Week of quarter calculation SQL 【发布时间】:2016-11-23 12:55:03 【问题描述】:

我正在尝试使用 sql 从 cal_date_d 表中查找季度的星期几。我的表有 cal_date、财政季度开始和结束日期。我还有一个包含财政周数的专栏。我的财政年度从二月开始。 但是,我必须解决此问题的最接近的查询如下:

select datepart(week, DATEADD(MONTH,-10,cal_date)) - ((DatePart(quarter, DATEADD(MONTH,-10,cal_date))-1) *13), 
       fiscal_week_of_year,
       weekofqtr,
       cal_date
  from cal_date_d_tst 

现在我得到的第一周结果总是 0。我不确定我哪里出错了。

帮我解决这个问题..

【问题讨论】:

根据您的样本集,预期的数据应该是什么? @BhupeshC 它应该始终在财政年度的第一个星期日开始季度计数的一周 【参考方案1】:

如果你有fiscal_quarter_start,那么这不起作用吗?

select 1 + datediff(day, fiscal_quarter_start, cal_date) / 7 

这只是计算进入季度的天数并除以 7。

【讨论】:

@gordanlinoff 不幸的是,这没有帮助.. 发生的事情是一周应该总是从星期日开始,到星期六结束。在上述情况下,如果季度从星期三开始,则查询将星期三至星期二视为一周。【参考方案2】:

如果您的查询基于 DATEPART(Quarters),请使用以下内容。

DATEDIFF(WEEK, DATEADD(MONTH, DATEDIFF(MONTH, 0, '2012-03-17'), 0), '2012-03-17') +1 AS WeekNoMonth,DATEDIFF(WEEK, DATEADD(QUARTER, DATEDIFF(QUARTER, 0, '2012-03-17'), 0), '2012-03-17') +1

Source

【讨论】:

以上是关于季度计算 SQL 的周数的主要内容,如果未能解决你的问题,请参考以下文章

在计算两者之间的周数时避免夏令时

如何计算编号。从当前周到给定周的周数?

PHP - 计算两个日期之间的周数

在红移中计算一年中的周数作为excel中的weeknum()

从SQL Server中的周数获取周开始日期和周结束日期

编写一个JAVA类,用于计算两个日期之间的周数。