code      sep     fromdate       todate                     duties
1          1      2002-10-01     2003-01-09                 工作1
1          2      2003-01-10     2003-08-24                 工作2
1          3      2003-08-25     2004-10-19                 工作3
1          4      2004-10-20     1900-01-01(sql默认,至今)工作4有上面这样的数据库结构,我在程序中有两个文本框输入起始和终止时间时间,只有年月。如果我输入2003-02到2004-05  ,我希望选出第二条和第三条。
如果我输入2004-09到2004-11  ,我希望选出第三条和第四条。程序和sql语句该怎么写啊。困扰了好久,总取不出合适的数据来。高人给看看!!!!

解决方案 »

  1.   


    select convert(varchar(7),convert(datetime,fromdate),120) as fromdate,   convert(varchar(7),convert(datetime,todate),120) as todate from  表  这样是年月
      

  2.   

    類似這樣子
    select * from tbl_test where (fromdate between '2003/02/01'  and  '2004/05/01' ) or (todate between '2003/02/01'  and  '2004/05/01')
      

  3.   

    但如果我输入的起始日期小于所有的fromdate,该怎么办。这样有些数据取不出来啊
      

  4.   

    输入的起始时间:t1,结束时间:t2
    where not(t2<fromDate or t1>toDate)
      

  5.   

    可以取出來啊,只要截止日期不是小于所有的fromdate就OK
      

  6.   

    where not(t2<fromDate or t1>toDate)寫得真漂亮