这确实取决于您如何对一周进行分类。一定要整整一周吗?从不是星期一的一天开始是否意味着如果他们在不是星期五的一天结束,就不算整周? 这是您必须确定业务逻辑的地方。
以下是一些基本的DATEDIFF 操作,可用于计算两个日期之间的差异,您可以将其用作计算的基础:
DECLARE @startDate DATE = '2017-10-01'
DECLARE @endDate DATE = '2018-03-31'
SELECT @startDate StartDate, @endDate EndDate,
DATEDIFF(DAY, @startDate, @endDate) DaysPassed,
DATEDIFF(WEEK, @startDate, @endDate) WeeksWorked,
DATEDIFF(DAY, @startDate, @endDate) / 7.0 CalculatedWeeksWorked
生产:
StartDate EndDate DaysPassed WeeksWorked CalculatedWeeksWorked
---------- ---------- ----------- ----------- ---------------------
2017-10-01 2018-03-31 181 25 25.857142
此外,您可能需要考虑不包括周末的工作天数,以计算出工作了多少周,如果是这样,请查看此帖子:
get DATEDIFF excluding weekends using sql server
财政年度
要计算财政年度,您应该能够像这样简单地查看日期的月份值:
DECLARE @startDate DATE = '2017-10-01';
-- if the month is greater than 3, add a year, else take the current year
SELECT CASE
WHEN DATEPART(MONTH, @startDate) > 3 THEN
CAST(DATEPART(YEAR, @startDate) + 1 AS VARCHAR(10)) + '-03-31'
ELSE
CAST(DATEPART(YEAR, @startDate) AS VARCHAR(10)) + '-03-31'
END AS fiscalYearEnd;
编辑@startDate 并测试上述内容,希望它适用于大多数情况。我已经对其进行了快速测试,它似乎返回了预期的结果。