gpt4 book ai didi

sql - T-SQL 如何获取 2 周支付期的日期范围

转载 作者:行者123 更新时间:2023-12-01 11:54:09 26 4
gpt4 key购买 nike

我有以下种子输入数据:

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

这只是公司工资单的例子。

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

同样,如果我输入 1 月 3 日 - 我应该返回 2012 年 12 月 31 日至 1 月 13 日

T-SQL 中是否有任何快捷方式或者我必须执行循环?

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

最佳答案

你需要一些模运算和DATEDIFF .

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

给出输出

periodLength    daysFromFirstPeriod daysIntoPeriod
14 27 13

currentPeriodStart        currentPeriodEnd
2011-12-17 00:00:00.000 2011-12-31 00:00:00.000

关于sql - T-SQL 如何获取 2 周支付期的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com