读书人

SQL查询某个月的数据帮忙啊该如何解

发布时间: 2012-05-20 16:03:12 作者: rapoo

SQL查询某个月的数据,帮忙啊
我想在用户选择某个月份时,查询数据库并列出该月的数据清单。

在SQL查询的时候发现不好处理。

比如 select * from database where date between #2012-3-1# and #2012-3-31#,其中年和月份是个变量。

但因为月份不同,每月天数也不同,我还需要判断是大月份还是小月份,还有是不是闰年,感觉不好处理。

或者直接判断所有记录的年月份是否等于用户选择的年月份,SQL语句好像也没法实现。

请教一下这个怎么解决?

[解决办法]
写存储过程 传参数。
[解决办法]
datediff

DECLARE @inputDate datetime

SELECT ,,, FROM 表 WHERE DATEDIFF(MONTH,[date],@InputDate) = 0
[解决办法]
SELECT * FROM
database WHERE DATEDIFF(m,date ,'2012-5-1')=0
ORDER BY date

其中的2012-5-1自己通过选择的年月组合成一个2012年5月的任何一天都可以
[解决办法]

SQL code
 --根据传入的日期参数获取当前月的起止日期 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这两个值带到你的 逻辑条件中
[解决办法]
SQL code
--获取某年某月总共有多少天DECLARE @年月 VARCHAR(8)SET @年月='201202'SELECT day(dateadd(month,1,@年月+ '01 ')-1)--29
[解决办法]
SQL code
--本月的开始日期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就行了,不用管大月小月闰年。
SQL code
select * from database where DATEPART(YEAR,date) = 2012 and MONTH(date) = 3
[解决办法]
SQL code
declare @year intdeclare @month intset @year=2012set @month=1select * 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')
[解决办法]
那你就在程序里面处理时间不就是了么

读书人网 >SQL Server

热点推荐