--1.select * from tablename where year(colname)=2011 and month(colname)=12--2.select * from tablename where convert(varchar(7),colname,120)='2011-12' [解决办法]
SQL code
select * from tablename where datepart(yy,colname)=2011 and datepart(mm,colname)=12 [解决办法]
[解决办法] --查某天. select * from 过磅表 where datediff(dd,过磅时间,'2011-12-12') = 0 select * from 过磅表 where convert(varchar(10),过磅时间,120) = '2011-12-12'
--查某月 select * from 过磅表 where datediff(mm,过磅时间,'2011-12-01') = 0 select * from 过磅表 where convert(varchar(7),过磅时间,120) = '2011-12'
[解决办法]
2012-12-12 索引可以使用 select * from tablename where colname between '2012-12-12' and '2012-12-13' 2012-12 索引可以使用 select * from tablename where colname between '2012-12-01' and '2013-01-01' '2012-12-12' 默认时间比较 '2012-12-12 00:00:00'
[解决办法] -- 按日期查 declare @time varchar(20) set @time = '2011-09-16' declare @now datetime declare @start datetime declare @end datetime select @now = convert(datetime,@time) set @start =dateadd(day,-1,@now) set @end = dateadd(day,1,@now) select * from reports where createTime> @start and createTime <@end
SELECT * FROM TABWHERE 过磅时间 >= '2011-12-12'AND 过磅时间 < '2011-12-13' [解决办法] colname between '2012-12-12' and '2012-12-13 23:59:59:999'
[解决办法]
[解决办法] 12楼基本正确了?,只是没处理好>=
SQL code
-- 按日期查declare @time varchar(20)set @time = '2011-09-16'declare @now datetimedeclare @start datetimedeclare @end datetimeselect @now = convert(datetime,@time)set @start = CONVERT(VARCHAR(10),@now,120)set @end = dateadd(day,1,@start)select * from reports where createTime >= @start and createTime <@end--按月份查declare @time varchar(20)set @time = '2011-09'declare @start datetimeselect @start =convert(datetime,@time+'-01')declare @end datetimeset @end = dateAdd(month,1,@start)select * from reports where createTime >= @start and createTime <@end--按日期段查declare @time1 varchar(20)set @time1 = '2011-09-16'declare @time2 varchar(20)set @time2 = '2011-09-24'declare @start datetimedeclare @end datetimeselect @start =convert(datetime,@time1)set @end = dateAdd(DAY,1,@time2)select * from reports where createTime >= @start and createTime <@end
[解决办法] colname between '2012-12-12' and '2012-12-13' 会把'2012-12-13'这个时间点数据也包括,所以不能用 [解决办法]
SQL code
where colname >= '2011-12-12' and colname < '2011-12-13'where colname >=convert(varchar(10),getdate(),120) and colname <convert(varchar(10),getdate()+1,120)where colname >=convert(varcha(7),getdate(),120)+'01' and colname <convert(varchar(7),dateadd(mm,1,getdate()),120)+'01' [解决办法]
[解决办法] --这样会用到[过磅时间]索引 select * from [过磅表] where [过磅时间]>='20120101' and [过磅时间]<='20120101 23:59'