日期:2014-05-17  浏览次数:20804 次

SQLSERVER中求两个日期段间的数据记录,ASP实现。
假如有个表workers ,有很多字段,其中两个字段是begindate 和enddate,用来表示某个工人开始工作的日期和结束工作的日期。

workername begindate enddate
张三 2012-6-1 2012-6-12
李四 2012-6-5 2012-6-20
王五 2012-6-9 2012-6-10

================================================

假如查询时,提供两个文本框,第一个框输入 2012-6-1 ,第二个框输入2012-6-8后,我实际想要得到的记录是:

张三和李四,两条记录的内容。

要求是: 只要 在搜索的两个日期间的(包括两个搜索日期)的,或者 begindate和enddate间有一个等于这两个搜索日期间的数据记录存在的话,就显示出来。[b]如何写语句??
用程序的方式,能实现。但是,现在想简化点,通过SQL语句的方式能实现.[/b]
假如第一个框的id= d1,第二个框的id=d2

===================================================
谢谢!




------解决方案--------------------
不是前面回答过了么

select * from test
where '2012-6-1' between [begindate] and [enddate]
or '2012-6-8' between [begindate] and [enddate]
------解决方案--------------------
d1 = "2011-11-11"
d2 = "2012-12-12"

sql = "select * from tb where startdate <= cast('"&d1&"' as datetime) and enddate >=cast('"&d1&"' as datetime) or startdate <= cast('"&d2&"' as datetime) and enddate >=cast('"&d2&"' as datetime) "