获取给定年份所有星期六的日期 - sql server

时间:2010-10-01 14:08:33

标签: sql-server tsql sql-server-2008

我需要获得某一年中所有星期六日期的清单。

我看过一个oracle帖子违反了一个有“财政日历表”的表,但是我无法成功转换它,也没有一个包含我想要调查的日期的表

SELECT DATE DATES,TO_CHAR(DATE,'DAY') DAYS FROM FISCAL_CALENDAR
WHERE DATE_YEAR = 2009 AND
DATE BETWEEN TRUNC(SYSDATE,'YEAR') AND
ADD_MONTHS(TRUNC(SYSDATE,'YEAR'),12) -1 AND
TRIM(TO_CHAR(DATE,'DAY')) = 'SUNDAY'

是甲骨文(例如,周日和2009年)

非常感谢。 - 汤姆

3 个答案:

答案 0 :(得分:17)

2010年你可以做到这一点

declare @d datetime
select @d = '20100101'  --'20090101'  if you want 2009 etc etc

select dateadd(dd,number,@d) from master..spt_values
where type = 'p'
and year(dateadd(dd,number,@d))=year(@d)
and DATEPART(dw,dateadd(dd,number,@d)) = 7

答案 1 :(得分:0)

声明@d datetime 选择@d =' 20100101' - ' 20090101'如果你想要2009等等

从master..spt_values中选择dateadd(dd,number,@ d) 其中type =' p' 和日期名称(工作日,(dateadd(dd,number,@ d)))('星期六','星期二' / *指定日期名称* /)

答案 2 :(得分:0)

@SQLMenace 这是每隔一个星期六展示,希望它对某人有所帮助,因为我正在尝试使用 SQL 创建一个轮班日历。从一年的第一个星期六开始,连续 3 天、2 天和 2 天休息。

declare @d datetime
select @d = '20210101'  --'20090101'  if you want 2009 etc etc

select dateadd(dd,number,@d) as "Day" from master..spt_values
where type = 'p'
and year(dateadd(dd,number,@d))=year(@d)
and DATEPART(dw,dateadd(dd,number,@d)) = 7 and DATEPART(WK,DATEADD(dd,number,@d)) % 2 = 0;