sqlserver 按时间进行查询

有两个条件@begin和@end。
想要实现:
①两个条件都有值或者其中一个有值,就按条件值进行查询;
②没有条件就查询全部。

写存储过程判断开始时间和结束时间是否有值

select * from 表名 where 时间列名 between @begin and @end

select * from 表名 where 时间列名 > 最小值 and 时间列名 < 最大值

CREATE PROCEDURE 存储过程名称
@begin varchar(20)= '' ,
@end varchar(20)= ''
AS

declare @strSQL varchar(6000)=''

declare @strWhere varchar(400)='1=1'

BEGIN
if @begin!=''
begin
set @strWhere=' and 时间列名>'''+@begin+''''
end
if @end !=''
begin
set @strWhere=' and 时间列名<'''+@end+''''
end
set @strSQL='select * from 表名 where '+@strWhere
exec (@strSQL)
END

GO