首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T-SQL如何获得2周工资期的日期范围

T-SQL如何获得2周工资期的日期范围
EN

Stack Overflow用户
提问于 2011-12-30 21:00:57
回答 2查看 4.1K关注 0票数 3

我有以下种子输入数据:

  1. 支付期开始:12月3日
  2. 支付期结束:12月16日

这只是公司工资发放的例子。

现在,我只有一个日期输入,例如12/30 (今天),我需要输出当前支付期间的日期范围:12月17日至12月30日。

同样的事情,如果我输入1月3日-我应该会回到2012年12月31日至1月13日。

在to中有没有快捷方式,或者我必须执行循环?

编辑:总结问题。如果我们知道支付周期何时开始(在过去)--我如何计算给定日期的支付周期?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-30 21:26:25

您需要一些模块操作和DATEDIFF

代码语言:javascript
复制
declare @periodStart datetime
declare @periodEnd datetime

set @periodStart = CAST('2011-12-03' as datetime)
set @periodEnd = CAST('2011-12-16' as datetime)

declare @anyDate datetime
set @anyDate = CAST('2011-12-30' as datetime)

declare @periodLength int
set @periodLength = DATEDIFF(day, @periodStart, @periodEnd) + 1


declare @daysFromFirstPeriod int
set @daysFromFirstPeriod = DATEDIFF(day, @periodStart, @anyDate)
declare @daysIntoPeriod int
set @daysIntoPeriod = @daysFromFirstPeriod % @periodLength

select @periodLength as periodLength, @daysFromFirstPeriod as daysFromFirstPeriod, @daysIntoPeriod as daysIntoPeriod
select DATEADD(day, -@daysIntoPeriod, @anyDate) as currentPeriodStart, DATEADD(day, @periodLength -@daysIntoPeriod, @anyDate) as currentPeriodEnd

给予输出

代码语言:javascript
复制
periodLength    daysFromFirstPeriod daysIntoPeriod
14              27                  13

代码语言:javascript
复制
currentPeriodStart        currentPeriodEnd
2011-12-17 00:00:00.000   2011-12-31 00:00:00.000
票数 5
EN

Stack Overflow用户

发布于 2016-06-22 10:27:05

下面这些会不会起作用?

代码语言:javascript
复制
DECLARE @StartDate DATETIME
SELECT @StartDate = '2016-05-01 00:00:00.000'
DECLARE @EndDate DATETIME
SELECT @EndDate = '2017-04-01 00:00:00.000'

DECLARE @Dates TABLE(StartDate DATETIME, EndDate DATETIME)

WHILE @StartDate <= @EndDate
BEGIN
INSERT INTO @Dates (StartDate, EndDate)
SELECT @StartDate - 13, @StartDate WHERE DATEPART(WEEK, @StartDate) % 2 = 1 AND DATEPART(WEEKDAY, @StartDate) = 7

SET @StartDate = @StartDate + 1 
END

-- Check the dates here... should be every 2 weeks
SELECT * FROM @Dates
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8684054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档