小弟我想了好久也没有解决的语句,请各位帮看一上,查询条件应该如何写
我想了好久也没有解决的语句,请各位帮看一下,查询条件应该怎么写
在一个表中有两个日期字段:Dt1,Dt2 (Dt1<Dt2)
查询条件也是两个日期: a, b (a<b)
想要查询出来只要 Dt1,Dt2 区间的日期只要部分或全部a,b区间就显示出来:
如:
XH Dt1 Dt2
0001 2013-01-11 2013-01-16
如果查询日期a,b
如果是:
2013-01-09 2013-01-13 (Dt1,Dt2 部分在a,b区间)
2013-01-09 2013-01-18 (Dt1,Dt2 全部在a,b区间)
2013-01-12 2013-01-17 (Dt1,Dt2 部分在a,b区间)
2013-01-12 2013-01-15 (Dt1,Dt2 部分在a,b区间)
这几种情况的查询条件都会将该条数据查询出来。麻烦各位大侠们帮看一下,查询条件应该怎么写
------解决方案--------------------
你试试,要不要区分哪行是属于那种情况?
在一个表中有两个日期字段:Dt1,Dt2 (Dt1<Dt2)
查询条件也是两个日期: a, b (a<b)
想要查询出来只要 Dt1,Dt2 区间的日期只要部分或全部a,b区间就显示出来:
如:
XH Dt1 Dt2
0001 2013-01-11 2013-01-16
如果查询日期a,b
如果是:
2013-01-09 2013-01-13 (Dt1,Dt2 部分在a,b区间)
2013-01-09 2013-01-18 (Dt1,Dt2 全部在a,b区间)
2013-01-12 2013-01-17 (Dt1,Dt2 部分在a,b区间)
2013-01-12 2013-01-15 (Dt1,Dt2 部分在a,b区间)
这几种情况的查询条件都会将该条数据查询出来。麻烦各位大侠们帮看一下,查询条件应该怎么写
------解决方案--------------------
你试试,要不要区分哪行是属于那种情况?
----------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-01-16 22:03:27
-- Version:
-- Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86)
-- Jun 17 2011 00:57:23
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go
create table [huang]([XH] varchar(4),[Dt1] datetime,[Dt2] datetime)
insert [huang]
select '0001','2013-01-11','2013-01-16' union all
select '0002','2013-01-08','2013-01-16' union all
select '0003','2013-01-11','2013-01-17' union all
select '0004','2013-01-06','2013-01-13' union all
select '0005','2013-01-19','2013-01-23' union all
select '0006','2013-01-20','2013-01-26'
--------------开始查询--------------------------
--SELECT * FROM huang
DECLARE @a DATETIME
DECLARE @b DATETIME
SET @a='2013-01-10'
SET @b='2013-01-15'
select *,'' from [huang]
WHERE DT1<=@b AND DT2>=@a
----------------结果----------------------------
/*
XH Dt1 Dt2
---- ----------------------- ----------------------- ----
0001 2013-01-11 00:00:00.000 2013-01-16 00:00:00.000
0002 2013-01-08 00:00:00.000 2013-01-16 00:00:00.000
0003 2013-01-11 00:00:00.000 2013-01-17 00:00:00.000
0004 2013-01-06 00:00:00.000 2013-01-13 00:00:00.000
(4 行受影响)
*/