日期:2014-05-18 浏览次数:20458 次
--根据传入的日期参数获取当前月的起止日期 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 这两个值带到你的 逻辑条件中
------解决方案--------------------
--获取某年某月总共有多少天 DECLARE @年月 VARCHAR(8) SET @年月='201202' SELECT day(dateadd(month,1,@年月+ '01 ')-1) --29
------解决方案--------------------
--本月的开始日期 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))))
------解决方案--------------------
你穿两个参数,一个开始时间,一个结束时间。然后再把之间的日期给补全,再去同表关连查询,这个怎么样?
------解决方案--------------------
变化2012和3就行了,不用管大月小月闰年。
select * from database where DATEPART(YEAR,date) = 2012 and MONTH(date) = 3
------解决方案--------------------
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')
------解决方案--------------------
那你就在程序里面处理时间不就是了么