SQL语句 如何算出2013年所有的周六和周日? sql 周末
解决方案 »
- 请教:这条SQL语句哪里写的不对?
- 数据库与ASP,java等开发语言
- 请问如何用SQL语句删除一个唯一索引?
- 安装SQL server2005时有警告
- 从磁盘中将备份数据库导入的问题
- SQL中如何比较日期、时间变量?
- 用 procedure 与 trigger 、database link 能完成吗? flowerofwind,rjcludy()请回答
- 请问各位前辈有什么办法把DVD格式文件存储在SQL中吗?谢谢
- Delphi中的数据库BDE错误?
- 如何在触发器里实现2个功能。1表不存在就创建 2 用变量名当表名
- 在win7(64)上安装sql 2008 r2问题
- 怎样实现仿事件探查器跟踪sql功能
GODECLARE @DateFirst TINYINT
SELECT @DateFirst=@@DATEFIRSTSET DATEFIRST 1SELECT
Date
,DATENAME(weekday,Date) AS Weekday
FROM (
SELECT
DATEADD(dd,number,'20130101') AS Date
FROM master.dbo.spt_values
WHERE DATEADD(dd,number,'20130101') BETWEEN '20130101' AND '20131231'
AND type='P'
) AS t
WHERE DATEPART(weekday,Date) IN(6,7)SET DATEFIRST @DateFirst
/*
Date Weekday
----------------------- --------
2013-01-05 00:00:00.000 星期六
2013-01-06 00:00:00.000 星期日
2013-01-12 00:00:00.000 星期六
2013-01-13 00:00:00.000 星期日
2013-01-19 00:00:00.000 星期六
2013-01-20 00:00:00.000 星期日
2013-01-26 00:00:00.000 星期六
2013-01-27 00:00:00.000 星期日
...
2013-12-21 00:00:00.000 星期六
2013-12-22 00:00:00.000 星期日
2013-12-28 00:00:00.000 星期六
2013-12-29 00:00:00.000 星期日
*/
set @sdt = '2013-01-01'declare @edt date
set @edt = DATEADD(year,1,@sdt )
declare @dt date
declare @w int
select @w = datepart(WEEKDAY ,@sdt)
if @w = 1
begin
print convert(varchar(10),@sdt,120) + ' 周日'
end
set @w = 7 - @w
set @dt = DATEADD(day,@w,@sdt)while @dt < @edt
begin
print convert(varchar(10),@dt,120) + ' 周六'
print convert(varchar(10),dateadd(day,1,@dt),120) + ' 周日'
set @dt = DATEADD(day,7,@dt)
end
select * from spt_values
where type='p'
-------------------------------
(所影响的行数为 256 行)
我这个怎么回事啊?查询结果为 0--255
declare @fdate datetime = '20130101' ;
while @fdate <= '20131231'
begin
insert into @t(fdate)
select @fdate
set @fdate = DATEADD(DAY , 1 , @fdate)
end
select * from @t where (@@DATEFIRST + datepart(DW , fdate) -1 )%7 in (0 ,6)