首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SQL获取具有周id、开始日期和结束日期的BiWeekly日期?

如何使用SQL获取具有周id、开始日期和结束日期的BiWeekly日期?
EN

Stack Overflow用户
提问于 2017-11-21 09:07:40
回答 1查看 1K关注 0票数 0

示例:Jan 2017

代码语言:javascript
复制
Week 1- 01/01/2017 - 01/14/2017

Week 2 - 01/15/2017 - 01/28/2017

等等..。

数据库: Server

EN

回答 1

Stack Overflow用户

发布于 2017-11-21 09:27:20

试试这个:

代码语言:javascript
复制
WITH dates AS (
    SELECT DATEADD(DAY,number,CAST('2017-01-01' AS DATE)) day
    FROM master..spt_values WHERE TYPE = 'p'
    AND number < 366
    )

SELECT 
    DATEPART(WEEK, day) as Week, 
    day as FirstWeekDay,
    dateAdd(day, 6, day) as LastWeekDay
FROM dates
WHERE DATENAME(dw, day) IN ('Monday')
Order by day

或者像你的例子一样定期15天:

代码语言:javascript
复制
WITH dates AS (
    SELECT DATEADD(DAY,number,CAST('2017-01-01' AS DATE)) day
    FROM master..spt_values WHERE TYPE = 'p'
    AND number < 366
    )

SELECT 
    row_number() over (order by day),
    day as FirstWeekDay,
    dateAdd(day, 13, day) as LastWeekDay
FROM dates
WHERE DATENAME(dw, day) IN ('Sunday')
 and DATEPART(WEEK, day) % 2 = 1
order by day

更新

如果您的Calendar表有所有的时间,则可以使用此查询:

代码语言:javascript
复制
SELECT 
    row_number() over (order by day_date) WeekId,
    day_date as FirstWeekDay,
    dateAdd(day, 6, day_date) as LastWeekDay  --change 6 -> 13 for 2 weeks
FROM Calendar
WHERE DATENAME(dw, day_date) IN ('Monday')    --change day name if you need
-- and DATEPART(WEEK, day_date) % 2 = 1       --remove comment for 2 weeks
order by day_date
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47409174

复制
相关文章

相似问题

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