首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SQL查询选择日期和每两个星期的薪资期间

如何使用SQL查询选择日期和每两个星期的薪资期间
EN

Stack Overflow用户
提问于 2014-06-23 20:27:22
回答 2查看 1.8K关注 0票数 0

我如何选择6/20/2014和每个支付日期(每两周)之前这个日期到2010年初?我也希望能够选择6/20/2014和每个支付日期(每两周)之后,这个日期到2020年年底。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-24 02:07:41

创建一个数字表

代码语言:javascript
复制
SELECT TOP 10000 IDENTITY(int,1,1) AS Number
INTO NumbersTest
FROM sys.objects s1
CROSS JOIN sys.objects s2
ALTER TABLE NumbersTest ADD CONSTRAINT PK_NumbersTest PRIMARY KEY CLUSTERED (Number)

然后

代码语言:javascript
复制
declare @startDate date = '6/20/2014'

--Dates from 1/1/2010 to 6/20/2014
select DATEADD(wk, -2 * (n.Number - 1), @startDate)
from NumbersTest n
where DATEADD(wk, -2 * (n.Number - 1), @startDate) >= '1/1/2010'

--Dates from 6/20/2014 to 12/31/2020
select DATEADD(wk, 2 * (n.Number - 1), @startDate)
from NumbersTest n
where DATEADD(wk, 2 * (n.Number - 1), @startDate) <= '12/31/2020'

SQL Fiddle

票数 1
EN

Stack Overflow用户

发布于 2014-06-23 23:05:00

下面的SQL可以给出您问题的第一部分的答案。可以使用相同的主体来获得第二部分的答案。

代码语言:javascript
复制
declare @startDate as date = '20140620';

with myCte1 as
(
    select @startDate as dt
    union all
    select DATEADD(week, -2, dt)
    from myCte1
    where dt > '20100112'
)

select m.dt
from myCte1 as m
option (maxrecursion 1000)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24374747

复制
相关文章

相似问题

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