如何在财务年度中找到周年,因为SQL Server输入中的下面列表中的年份和周应该从星期一开始:
- 01-Wk Mar-28-Apr-03 28/03/2016 - 03/04/2016
- 02-Wk Apr-04-Apr-10 04/04/2016 - 10/04/2016
- 03-Wk Apr-11-Apr-17 11/04/2016 - 17/04/2016
- 04-Wk Apr-18-Apr-24 18/04/2016 - 24/04/2016
- 05-Wk Apr-25-May-01 25/04/2016 - 01/05/2016
- 06-Wk May-02-May-08 02/05/2016 - 08/05/2016
- 07-Wk May-09-May-15 09/05/2016 - 15/05/2016
答案 0 :(得分:1)
这样做的最佳和最可靠的方法是创建一个日历表。这是一个表格,其中包含您可以通过任何查询链接到的日期所需的所有信息。这样做的好处是,您可以根据需要设置自己的周数,也可以为每行数据创建一个周开始日期列。
一个非常基本的版本会是这样的;
Date WeekNum WeekStart WeekEnd Year
2016-06-01 24 2016-05-30 2016-06-05 2016
2016-06-02 24 2016-05-30 2016-06-05 2016
2016-06-03 24 2016-05-30 2016-06-05 2016
2016-06-04 24 2016-05-30 2016-06-05 2016
2016-06-05 24 2016-05-30 2016-06-05 2016
2016-06-06 25 2016-06-06 2016-06-05 2016
2016-06-07 25 2016-06-06 2016-06-05 2016
这比性能每次计算更好。
编辑回答以包含您的评论。要检索您的数据,您需要这样的假设您将要通过年和周
DECLARE @YearParam int; SET @YearParam = 2016
DECLARE @WeekParam int; SET @WeekParam = 24
SELECT DISTINCT
Year
,WeekNum
,WeekStart + ' - ' + WeekEnd
FROM DateTable
WHERE Year = @YearParam
AND WeekNum = @WeekParam
下面围绕这个主题进行了进一步的阅读;
http://michaelmorley.name/how-to/create-date-dimension-table-in-sql-server
https://dba.stackexchange.com/questions/74957/best-approach-for-populating-date-dimension-table