0

我试图从一周的第一天开始找到季度。

例如,一周的第一天是12/31/2012

我希望该季度说 2013 年第一季度。但如果我从特定日期找到 Qtr,它会说 2012 年第四季度。

4

2 回答 2

0

这是给 Oracle 的 - 年度周表......可能会给你一些想法:

-- ISO_WK# --
SELECT mydate
  , TRUNC(mydate, 'w') wk_starts
  , TRUNC(mydate, 'w') + 7 - 1/86400 wk_ends
  , TO_NUMBER (TO_CHAR (mydate, 'IW')) ISO_wk#  
FROM
(
 SELECT TRUNC(SYSDATE, 'YEAR')-1 + LEVEL AS mydate  -- 1st day of yr-1 day --
   FROM dual
CONNECT BY LEVEL <= 
  (-- First day of curr year – first day of past year --
   SELECT TRUNC(SYSDATE, 'YEAR')-TRUNC(ADD_MONTHS (SYSDATE, -12), 'YEAR') "Num of Days"   
     FROM dual
  )
 )
/
于 2013-01-11T21:54:31.380 回答
0

我不确定这是否适用于您的所有情况,因此请使用不同的日期进行测试:

DECLARE @date DATETIME
SET @date = '2012-12-31'

SELECT 
    qtr = DATEPART(quarter, DATEADD(DAY, 7 - DATEPART(weekday, @Date), @date)),
    YearNum = DATEPART(YEAR, DATEADD(DAY, 7 - DATEPART(weekday, @Date), @date))
于 2013-01-11T19:47:48.637 回答