求一条sql 语句 传入月份 直接输出 这个月的每一天和日期列表2011-6-1, 星期三
20011-6-2,星期四
20011-6-3,星期五
20011-6-4,星期六
20011-6-5,星期日
20011-6-6,星期一
20011-6-7,星期二
20011-6-8,星期三
20011-6-9,星期四.....2011-6-30,星期四
20011-6-2,星期四
20011-6-3,星期五
20011-6-4,星期六
20011-6-5,星期日
20011-6-6,星期一
20011-6-7,星期二
20011-6-8,星期三
20011-6-9,星期四.....2011-6-30,星期四
解决方案 »
- sql的截取 替代函数
- 求一句关于排序的SQL语句
- 存储过程解答???
- 启动全文检索服务时提示服务控制失败:发生错误1058 -(无法启动服务,原因可能是它被禁用或与它相关联的设备没有启动。)此时正在MSSear
- 远程数据库访问?
- 求助设计销售衣服网站的后台数据库
- SQL语句如何写,高手进来看。
- 存储过程中Text字段如何定义,赋值,
- 请问SQL Server 2000个人版与标准版的区别
- 用InterDev 写Asp,用代码访问sql server没错,可是用DTC控件加入数据连接和数据集后,运行时就显示服务器内部错误为什么?
- ESCAPE
- SQL SERVER 2005企业版有没有像ORACLE一样的本地分区索引?网上资料很难查到
SELECT
CONVERT(VARCHAR(8),DATEADD(day,number,@Month+'01'),112)
FROM
master..spt_values
WHERE
type='P'
and
datediff(mm,DATEADD(day,number,@Month+'01'),@Month+'01')=0
DECLARE @Month varchar(6)set @Month='200801'
SELECT
CONVERT(VARCHAR(8),DATEADD(day,number,@Month+'01'),112),
datename(weekday,CONVERT(VARCHAR(8),DATEADD(day,number,@Month+'01'),112))
FROM
master..spt_values
WHERE
type='P'
and
datediff(mm,DATEADD(day,number,@Month+'01'),@Month+'01')=0
create table #t_dt(dt datetime,wk varchar(10) )
declare @bdt datetime
declare @edt datetime
set @bdt = '2011-06-01'--定义的变量
select @edt = dateadd(day,-1,left(convert(varchar(10),dateadd(month,1,@bdt),120),7) + '-01')
while @bdt <= @edt
begin
insert into #t_dt(dt,wk)
select @bdt,case datepart(weekday,@bdt)
when 1 then '星期日'
when 2 then '星期一'
when 3 then '星期二'
when 4 then '星期三'
when 5 then '星期四'
when 6 then '星期五'
when 7 then '星期六' end
set @bdt = dateadd(day,1,@bdt)
endselect * from #t_dt order by dtdrop table #t_dt
SELECT
CONVERT(VARCHAR(8),DATEADD(day,number,@Month+'01'),112)+','+
datename(weekday,CONVERT(VARCHAR(8),DATEADD(day,number,@Month+'01'),112))
FROM
master..spt_values
WHERE
type='P'
and
datediff(mm,DATEADD(day,number,@Month+'01'),@Month+'01')=0
declare @i varchar(2)
set @i = 6select ltrim(year(getdate()))+'-'+right('00'+@i,2)+'-'+right(100+number,2),
datename(weekday,convert(datetime,ltrim(year(getdate()))+'-'+right('00'+@i,2)+'-'+right(100+number,2)))
from master..spt_values
where [type] = 'p' and number between 1
and datediff(dd,
convert(datetime,ltrim(year(getdate()))+'-'+right('00'+@i,2)+'-01'),
dateadd(dd,-1,dateadd(mm,1,convert(datetime,ltrim(year(getdate()))+'-'+right('00'+@i,2)+'-01')))) + 1
/*
---------------------- ------------------------------
2011-06-01 星期三
2011-06-02 星期四
2011-06-03 星期五
2011-06-04 星期六
2011-06-05 星期日
2011-06-06 星期一
2011-06-07 星期二
2011-06-08 星期三
2011-06-09 星期四
2011-06-10 星期五
2011-06-11 星期六
2011-06-12 星期日
2011-06-13 星期一
2011-06-14 星期二
2011-06-15 星期三
2011-06-16 星期四
2011-06-17 星期五
2011-06-18 星期六
2011-06-19 星期日
2011-06-20 星期一
2011-06-21 星期二
2011-06-22 星期三
2011-06-23 星期四
2011-06-24 星期五
2011-06-25 星期六
2011-06-26 星期日
2011-06-27 星期一
2011-06-28 星期二
2011-06-29 星期三
2011-06-30 星期四(30 行受影响)
declare @bdt datetime
declare @edt datetime
set @bdt = '2011-06-01'--定义的变量
select @edt = dateadd(day,-1,left(convert(varchar(10),dateadd(month,1,@bdt),120),7) + '-01')
while @bdt <= @edt
begin
insert into #t_dt(dt,wk)
select @bdt,datename(weekday,@bdt )
set @bdt = dateadd(day,1,@bdt)
endselect * from #t_dt order by dtdrop table #t_dt
IF not object_id('tempdb..#MyDates') is null
drop table #MyDatesCREATE TABLE #MyDates
(
DateID INT NOT NULL
, TheDate DATETIME NOT NULL
, DayOfMonth INT NOT NULL
, DayOfYear INT NOT NULL
, DayOfWeek INT NOT NULL
, DayName VARCHAR(9) NOT NULL
, WeekOfYear INT NOT NULL
, WeekName VARCHAR(7) NOT NULL
, MonthOfYear INT NOT NULL
, MonthName VARCHAR(9) NOT NULL
, Quarter INT NOT NULL
, QuarterName CHAR(6) NOT NULL
, Year INT NOT NULL
,
)
DECLARE @startdate DATETIME
DECLARE @enddate DATETIME
DECLARE @date DATETIME
DECLARE @id INT
SET @startdate = CONVERT(varchar(6) , getdate(), 112 ) + '01' --Change these to
SET @enddate = CONVERT(varchar(6) , dateadd(month,1,getdate()), 112 ) + '01' --whatever you want
SET @id = 0
SET @date = DATEADD(dd, @id, @startdate)WHILE @date < @enddate
BEGIN
INSERT INTO #MyDates
VALUES ( @id --DateID
, @date --TheDate
, DATEPART(dd, @date) --DayOfMonth
, DATEPART(dy, @date) --DayOfYear
, DATEPART(dw, @date) --DayOfWeek
, DATENAME(dw, @date) --DayName
, DATEPART(ww, @date) --WeekOfYear
, 'Week ' + DATENAME(ww, @date) --WeekName
, DATEPART(mm, @date) --MonthOfYear
, DATENAME(mm, @date) --MonthName
, DATEPART(qq, @date) --Quarter
, 'Q' + DATENAME(qq, @date) + DATENAME(yy, @date) --QuarterName
, DATEPART(yy, @date) --Year
) SET @id = @id + 1
SET @date = DATEADD(dd, @id, @startdate)END select * from #MyDates
GO
/*
0 2011-06-01 00:00:00.000 1 152 4 星期三
1 2011-06-02 00:00:00.000 2 153 5 星期四
2 2011-06-03 00:00:00.000 3 154 6 星期五
3 2011-06-04 00:00:00.000 4 155 7 星期六
4 2011-06-05 00:00:00.000 5 156 1 星期日
5 2011-06-06 00:00:00.000 6 157 2 星期一
6 2011-06-07 00:00:00.000 7 158 3 星期二
7 2011-06-08 00:00:00.000 8 159 4 星期三
8 2011-06-09 00:00:00.000 9 160 5 星期四
9 2011-06-10 00:00:00.000 10 161 6 星期五
10 2011-06-11 00:00:00.000 11 162 7 星期六
11 2011-06-12 00:00:00.000 12 163 1 星期日
12 2011-06-13 00:00:00.000 13 164 2 星期一
13 2011-06-14 00:00:00.000 14 165 3 星期二
14 2011-06-15 00:00:00.000 15 166 4 星期三
15 2011-06-16 00:00:00.000 16 167 5 星期四
16 2011-06-17 00:00:00.000 17 168 6 星期五
17 2011-06-18 00:00:00.000 18 169 7 星期六
18 2011-06-19 00:00:00.000 19 170 1 星期日
19 2011-06-20 00:00:00.000 20 171 2 星期一
20 2011-06-21 00:00:00.000 21 172 3 星期二
21 2011-06-22 00:00:00.000 22 173 4 星期三
22 2011-06-23 00:00:00.000 23 174 5 星期四
23 2011-06-24 00:00:00.000 24 175 6 星期五
24 2011-06-25 00:00:00.000 25 176 7 星期六
25 2011-06-26 00:00:00.000 26 177 1 星期日
26 2011-06-27 00:00:00.000 27 178 2 星期一
27 2011-06-28 00:00:00.000 28 179 3 星期二
28 2011-06-29 00:00:00.000 29 180 4 星期三
29 2011-06-30 00:00:00.000 30 181 5 星期四
*/