/*
日期类型的数据记录,通过like查询。在where tDate like '%a%'也能查询到记录
很奇怪,弱弱的问一下为什么?忘不吝赐教,多谢!!!
*/
if (exists (select name from sysobjects where name = 't'))
drop table t
go
create table t (
tId int primary key identity(1,1), 
tDate datetime
)
go
insert into t values(getDate());--tDate like '%a%'查不到
insert into t values('2001-11-13');
insert into t values('2001-07-08');
insert into t values('2010-10-10');
insert into t values('2001-11-12');
insert into t values('2001-07-08');
insert into t values('2000-10-15');
insert into t values('2011-9-22');
insert into t values('2010-07-8');
insert into t values(getDate());--tDate like '%a%'查不到
insert into t values('2011-9-22 10:55:22');
insert into t values('2010-07-8 22:23:21');--tDate like '%a%'查不到select * from t where tDate like '%a%';select * from t where tid not in (select tId from t where tDate like '%a%');

解决方案 »

  1.   

    因为getdate() 是系统函数
    你插入的时候是当天的时间
      

  2.   

    你看下查询出来的结果是时间不是字符串if (exists (select name from sysobjects where name = 't')) 
      drop table t 
     go 
     create table t ( 
      tId int primary key identity(1,1),  
      tDate datetime 
     ) 
     go 
     insert into t values(getDate());--tDate like '%a%'查不到 
     insert into t values('2001-11-13'); 
     insert into t values('2001-07-08'); 
     insert into t values('2010-10-10'); 
     insert into t values('2001-11-12'); 
     insert into t values('2001-07-08'); 
     insert into t values('2000-10-15'); 
     insert into t values('2011-9-22'); 
     insert into t values('2010-07-8'); 
     insert into t values(getDate());--tDate like '%a%'查不到 
     insert into t values('2011-9-22 10:55:22'); 
     insert into t values('2010-07-8 22:23:21');--tDate like '%a%'查不到 select * from ttId         tDate
    ----------- -----------------------
    1           2010-09-26 14:49:23.403
    2           2001-11-13 00:00:00.000
    3           2001-07-08 00:00:00.000
    4           2010-10-10 00:00:00.000
    5           2001-11-12 00:00:00.000
    6           2001-07-08 00:00:00.000
    7           2000-10-15 00:00:00.000
    8           2011-09-22 00:00:00.000
    9           2010-07-08 00:00:00.000
    10          2010-09-26 14:49:23.483
    11          2011-09-22 10:55:22.000
    12          2010-07-08 22:23:21.000(12 行受影响)
      

  3.   


    按照你的说法,那这个字符串也能是的
    insert into t values('2010-07-8 22:23:21');--tDate like '%a%'查不到
    怎么不行
      

  4.   

     insert into t values('2010-07-8 22:23:21');--tDate like '%a%'查不到  你插入的是'2010-07-8 22:23:21'里面没有a啊你看下最后
    select出来的结果
      

  5.   

    这是因为 你插入的那些能查到的时间 都是上午 时间数据转换为字符串的时候 有Am(上午)Pm(下午)的字符 
    如果你  select * from t where tDate like '%p%'就能查到另外三条了
      

  6.   

    --tDate like '%a%'查不到 =======================
    为什么like '%a%'呢?
    我试了下like '%b%' ,'%c%'等
    你们再看看结果是什么呢? select * from t where tDate like '%C%'; 
      
     select * from t where tid not in (select tId from t where tDate like '%C%'); 
    tId         tDate
    ----------- -----------------------
    4           2010-10-10 00:00:00.000
    7           2000-10-15 00:00:00.000(2 row(s) affected)tId         tDate
    ----------- -----------------------
    1           2010-09-26 14:58:51.947
    2           2001-11-13 00:00:00.000
    3           2001-07-08 00:00:00.000
    5           2001-11-12 00:00:00.000
    6           2001-07-08 00:00:00.000
    8           2011-09-22 00:00:00.000
    9           2010-07-08 00:00:00.000
    10          2010-09-26 14:58:52.010
    11          2011-09-22 10:55:22.000
    12          2010-07-08 22:23:21.000(10 row(s) affected) select * from t where tDate like '%b%'; 
      
     select * from t where tid not in (select tId from t where tDate like '%b%'); tId         tDate
    ----------- -----------------------(0 row(s) affected)tId         tDate
    ----------- -----------------------
    1           2010-09-26 14:58:51.947
    2           2001-11-13 00:00:00.000
    3           2001-07-08 00:00:00.000
    4           2010-10-10 00:00:00.000
    5           2001-11-12 00:00:00.000
    6           2001-07-08 00:00:00.000
    7           2000-10-15 00:00:00.000
    8           2011-09-22 00:00:00.000
    9           2010-07-08 00:00:00.000
    10          2010-09-26 14:58:52.010
    11          2011-09-22 10:55:22.000
    12          2010-07-08 22:23:21.000(12 row(s) affected)
      

  7.   


    就是这样的!09 26 2010  3:05PM
    11 13 2001 12:00AM
    07  8 2001 12:00AM
    10 10 2010 12:00AM
    11 12 2001 12:00AM
    07  8 2001 12:00AM
    10 15 2000 12:00AM
    09 22 2011 12:00AM
    07  8 2010 12:00AM
    09 26 2010  3:05PM
    09 22 2011 11:00AM
    07  8 2010 10:23PM
      

  8.   

    嗯,是这样的,是AM与PM的关系。
      

  9.   

    if (exists (select name from sysobjects where name = 't')) 
      drop table t 
     go 
     create table t ( 
      tId int primary key identity(1,1),  
      tDate datetime 
     ) 
     go 
     insert into t values(getDate());--tDate like '%a%'查不到 
     insert into t values('2001-11-13'); 
     insert into t values('2001-07-08'); 
     insert into t values('2010-10-10'); 
     insert into t values('2001-11-12'); 
     insert into t values('2001-07-08'); 
     insert into t values('2000-10-15'); 
     insert into t values('2011-9-22'); 
     insert into t values('2010-07-8'); 
     insert into t values(getDate());--tDate like '%a%'查不到 
     insert into t values('2011-9-22 10:55:22'); 
     insert into t values('2010-07-8 22:23:21');--tDate like '%a%'查不到 
    --使用Convert将时间进行转换即可select convert(varchar(26),tDate,109) tDate from t where 
    convert(varchar(26),tDate,109) like '%a%'tDate
    --------------------------
    11 13 2001 12:00:00:000AM
    07  8 2001 12:00:00:000AM
    10 10 2010 12:00:00:000AM
    11 12 2001 12:00:00:000AM
    07  8 2001 12:00:00:000AM
    10 15 2000 12:00:00:000AM
    09 22 2011 12:00:00:000AM
    07  8 2010 12:00:00:000AM
    09 22 2011 10:55:22:000AM(9 行受影响)
      

  10.   

    谢谢各位油菜哥!tks
    你们太可爱了~~