22,297
社区成员




declare @year int
declare @month int
set @year=2012
set @month=1
select * from database where date between dateadd(day,0,convert(varchar(4),@year) +'-'+convert(varchar(2),@month)+'-01') and
dateadd(day,-1,convert(varchar(4),@year) +'-'+convert(varchar(2),@month+1)+'-01')
select * from database where DATEPART(YEAR,date) = 2012 and MONTH(date) = 3
--本月的开始日期
select convert(varchar(10),dateadd(dd,-DatePart(day,dateadd(dd,-1,getdate())),getdate()),120)
--本月的最后一天日期
select convert(varchar(10),dateadd(dd,-DatePart(day,dateadd(MM,1,getdate())),dateadd(MM,1,getdate())),120)
--本月多少天
select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))
--获取某年某月总共有多少天
DECLARE @年月 VARCHAR(8)
SET @年月='201202'
SELECT day(dateadd(month,1,@年月+ '01 ')-1)
--29
--根据传入的日期参数获取当前月的起止日期
declare @month_begin_date varchar(10)
declare @month_end_date varchar(10)
declare @getdate datetime
set @getdate =GETDATE() --可以作为存储过程的参数
select @month_begin_date =convert(varchar(10),dateadd(dd,-DatePart(day,dateadd(dd,-1,@getdate)),getdate()),120)
select @month_end_date =convert(varchar(10),dateadd(dd,-DatePart(day,dateadd(MM,1,@getdate)),dateadd(MM,1,@getdate)),120)
select @month_begin_date,@month_end_date
/*
2012-05-01 2012-05-31
*/
将 @month_begin_date,@month_end_date
这两个值带到你的 逻辑条件中