2016-02-18 35 views
-2

我想顯示財政周的一列。我們的財政年度從四月份開始。我如何計算財政周

到目前爲止,我有以下,使用DATENAME(WW,DateAndTime)爲周

DateAndTime     Week 
2015-04-01 22:45    14 
2015-06-14 13:22    25 
2015-12-02 09:15    49 
2016-01-01 07:35    1 

我想輸出顯示:

DateAndTime     Week   Fiscal Week 
2015-04-01 22:45    14     1 
2015-06-14 13:22    25     12 
2015-12-02 09:15    49     36    
2016-01-01 07:35    1     41 
+0

所以你要計算列做到這一點?持續計算的列?你的約束是什麼? –

+1

使用了標記dbms,其中很多標記在日期/時間上遠不符合ANSI SQL標準。 – jarlh

+0

添加52 DATENAME(WW,今年04-01),以周,模52.你不過使用權一年。對於日期四月使用前一年之前,對於日期四月使用當前的一年。 – neuhaus

回答

0

雖然我不明白的邏輯在財政周後面(1和41之間的差異是40,但在14和1之間是39),也許我錯過了某些東西或者你犯了一個錯字。

但是,一般你會做這樣的事情(假設差爲40周):

SELECT week, (week+40)%52 AS fw FROM ... 

如果財政年度開始於不同的每一週每(比如,13或14周視年份),您可以使用日期和時間函數,但它們可能在SQL版本之間有所不同。在MySQL中你有YEAR()MONTH()WEEK()

例如:

SELECT week, (week+(52-WEEK(CONCAT_WS('-', YEAR(NOW()), '04-01'))))%52 FROM ... 

但它可能是矯枉過正。

注:這是可以統計的其他方式:如果從一週中減去的,而不是添加差異,你將需要添加52,如果數字爲負。您可以通過添加52,然後做模(%)52

+0

我不認爲每週的抵消額是相同的常數。 2016年4月1日爲13周,2019年是14周 – neuhaus

+0

增加了關於如何解決一個音符,但它只是感覺有點小題大做了我。 – Ynhockey