我有一个表如下
id    user_name   age    reg_date(datetime 类型)
1001   user01      21    2008-03-01 00:00:00.000
1002   user02      25    2008-03-21 00:00:00.000
1003   user03      22    2008-04-25 00:00:00.000
1004   user04      24    2008-04-23 00:00:00.000
1005   user05      23    2008-04-22 00:00:00.000
1006   user06      31    2008-04-27 00:00:00.000
1007   user07      29    2008-04-29 00:00:00.000
我想查找2008-04-01 至 2008-04-25 间注册的人员信息,SQL语句如下:
select * from user_table where reg_date between 2008-04-01 and 2008-04-25 或
select * from mprodinv where indate<=2008-04-01 and indate>=2008-04-25都找不到相关的数据,为什么?谢谢

解决方案 »

  1.   

    select * from mprodinv 
    where indate >='2008-04-01' and indate<dateadd(dd,1,'2008-04-25')
      

  2.   

    indate <=2008-04-01 and indate>=2008-04-25
    --错啦~
      

  3.   

    --datetime数据类型要加引号
    select * from user_table where reg_date between '2008-04-01' and '2008-04-25' 
      

  4.   

    select * from user_table where reg_date between '2008-04-01' and '2008-04-25'
    select * from mprodinv where indate >='2008-04-01' and indate<='2008-04-25' 
      

  5.   

    wzy_love_sly  的语句运行后提示 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
    viva369 的语句也查不到任何数据
      

  6.   

     conan304 给出的方法也是提示 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
      

  7.   


    --将时间字段转换下
    select * from user_table where convert(varchar(10),reg_date,120) between '2008-04-01' and '2008-04-25' 
      

  8.   

    ??越界?
    declare @t table([id] int,[user_name] varchar(10),age int,reg_date datetime)
    insert @t
    select 1001,'user01',21,'2008-03-01 00:00:00.000' 
    union all select 1002,'user02',25,'2008-03-21 00:00:00.000' 
    union all select 1003,'user03',22,'2008-04-25 00:00:00.000' 
    union all select 1004,'user04',24,'2008-04-23 00:00:00.000'
    union all select 1005,'user05',23,'2008-04-22 00:00:00.000'
    union all select 1006,'user06',31,'2008-04-27 00:00:00.000' 
    union all select 1007,'user07',29,'2008-04-29 00:00:00.000'select * from @t
    where reg_date between '2008-4-1' and '2008-4-25'select * from @t
    where reg_date>='2008-4-1' and reg_date<='2008-4-25'/*
    id          user_name  age         reg_date                                               
    ----------- ---------- ----------- ------------------------------------------------------ 
    1003        user03     22          2008-04-25 00:00:00.000
    1004        user04     24          2008-04-23 00:00:00.000
    1005        user05     23          2008-04-22 00:00:00.000
    */
      

  9.   

    谢谢ojuju10 ,conan304 帮忙。问题已经解决了。谢谢了。