发布网友 发布时间:2022-04-29 20:44
共3个回答
懂视网 时间:2022-04-30 01:05
前面写过类似的文章,这是开发时用的if OBJECT_ID(N'tf_Data_TimeRange',N'FN') is not null drop function tf_Data_TimeRange go create function tf_Data_TimeRange( @startDate varchar(20), --开始日期 @endDate varchar(20), --结束日期 @dataType int --数据类型 1:小时 2:日 ) returns @temp table(orderby int,MonitorTime varchar(20)) as /******************************** --function:递归生成时间段 --author:zhujt --create date:2015-5-28 17:07:11 *********************************/ begin if @dataType=1 begin with temp(orderby,vdate) as (select 1 orderby,convert(varchar(20),@startDate,120) union all select orderby+1, convert(varchar(20),dateadd(HOUR,1,vdate),120) from temp where vdate < @endDate ) insert into @temp(orderby,MonitorTime) select orderby,vdate from temp OPTION (MAXRECURSION 0) --排除限值 end else if @dataType=2 begin set @endDate=convert(varchar(10),@endDate,120); with temp(orderby,vdate) as (select 1 orderby,convert(varchar(10),@startDate,120) union all select orderby+1, convert(varchar(10),dateadd(DD,1,vdate),120) from temp where vdate < @endDate ) insert into @temp(orderby,MonitorTime) select orderby,vdate from temp OPTION (MAXRECURSION 0) --排除限值 end return; end
SQLServer生成时间范围
标签:sql server
热心网友 时间:2022-04-29 22:13
SELECT * FROM 表明 WHERE 日期字段名 BETWEEN '20130101' AND '20130130'
或者:
SELECT * FROM 表明 WHERE 日期字段名 BETWEEN CONVERT(datetime,'2013-01-01',120) AND CONVERT(datetime,'2013-01-30',120)
注意事项
在写按时间段查询的sql语句的时候 一般我们会这么写查询条件:
where date>='2010-01-01' and date<='2010-10-1'。
但是在实执行Sql时些语句会转换成这样:
where date>='2010-01-01 0:00:00' and date<='2010-10-1:0:00:00',再看这个条件的话,就会有些明白,那就是'2010-10-1 0:00:00' 之后的数据例如('2010-10-1:08:25:00')查不到,也就是说2010-10-1的数据查不到。
修改查询条件为:
where date>='2010-01-01' and date<='2010-10-1 23:59:59' 或 where date>='2010-01-01' and date<='2010-10-2'。
某个表某个字段是Datetime型 以"YYYY-MM-DD 00:00:00" 存放
热心网友 时间:2022-04-29 23:31
你时间字段是啥类型的