现数据库里有一个时间字段SendTime但是字符串格式的且是小时分钟秒的如:“2008-08-28 10:59:49”,我现在做一个查询的页面输入的是“2008-08-28”这种格式。有一个开始时间和一个结束时间分别命名为“StartTime”和“EndTime”.请问要实现一个查询时间段如何实现,比如在“2008-08-28 10:59:49”和
“2008-09-1 11:59:49”。只想实现大于等于“2008-08-28 ”,小于等于“2008-09-1 ”
如何用SQL语句实现。

解决方案 »

  1.   

    select * from tb where convert(varchar(10),sendtime,120)>='2008-08-28 ' and convert(varchar(10),sendtime,120)<='2008-08-28 '
      

  2.   

    declare @s datetime
    set @s='2008-09-1 11:59:49'
    select convert(varchar(15),@s,23)--------------- 
    2008-09-01(1 row(s) affected)
      

  3.   

    select * from tb where sendtime>='2008-08-28' and sendtime<'2008-09-02'
    一般不会有问题,只要格式统一为‘2008-08-28 10:59:49’这种格式的保险起见用
    select * from tb where convert(varchar(10),sendtime,120)>='2008-08-28' and convert(varchar(10),sendtime,120) <'2008-09-02'不过数据量大的情况下效率比较差
      

  4.   


    select * from table1 where datediff(day,StartTime,“2008-08-28")<=0 and datediff(day,EndTime,“2008-09-1")>=0