日期:2014-05-18  浏览次数:20565 次

mssql 里怎么查询出一段时间内的内容
我想查询数据库里最近一个月的数据,但不知道sql查询语句该怎么写
那个打下指点一下小弟!!

------解决方案--------------------

--这里说的一个月,是按天?

select * from 表名
where datediff(d,日期字段名,getdate()) <30

------解决方案--------------------
declare @GetCurrentDate datetime
set @GetCurrentDate = getdate()
select *
from 表
where datediff(dd,@GetCurrentDate,表中的日期字段) > = 30
说明:“表中的日期字段”也须是datetime类型。
------解决方案--------------------
不好意思,是
“ <= 30”

更正:
declare @GetCurrentDate datetime
set @GetCurrentDate = getdate()
select *
from 表
where datediff(dd,@GetCurrentDate,表中的日期字段) <= 30
说明:“表中的日期字段”也须是datetime类型。
------解决方案--------------------
如是上一个月的数据就用:
select * from 表名
where 日期字段名 between dateadd(dd,1-day(dateadd(dd,-day(getdate()),getdate())),dateadd(dd,-day(getdate()),getdate())) and dateadd(dd,-day(getdate()),getdate())
------解决方案--------------------
CREATE PROC 存储过程名
(

@startDate NUMERIC(8,0), ---开始时间
@endDate NUMERIC(8,0) --结束时间
)
AS
DECLARE @SQL VARCHAR(5000)
DECLARE @SubWhere VARCHAR(2000)


SET @SQL= ' '
SET @SubWhere= ' '

IF @startDate <> 0 AND @startDate IS NOT NULL
SET @SubWhere=@SubWhere+ 'AND n_date> = '+CONVERT(VARCHAR(15),@startDate)

IF @endDate <> 0 AND @endDate IS NOT NULL
SET @SubWhere=@SubWhere+ 'AND n_date <= '+CONVERT(VARCHAR(15),@endDate)


SET @SQL= 'SELECT *
FROM

WHERE 1=1 '+@SubWhere


EXEC(@SQL)


GO
这个比较灵活,可以查任何时间段的