今天项目中遇到一个奇怪SQL语句的问题,留下来以后慢慢琢磨。
一个log表,表中数据有
logid type content time user 。。。。。
1 ADD Error 2010-01-29 08:55:49.170 tujunlan 12334 PermissionGroup
2 ADD Error 2010-01-29 09:07:54.297 tujunlan 12334 PermissionGroup
3 ADD Error 2010-01-29 09:10:11.390 tujunlan 12334 PermissionGroup
4 ADD Error 2010-01-29 09:11:41.077 tujunlan 12334 PermissionGroup
5 ADD Error 2010-01-29 09:13:45.843 tujunlan 12334 PermissionGroup
6 ADD Error 2010-01-30 00:00:00.000 tujunlan 1234 PermissionGroup
7 ADD Error 2010-01-30 01:00:00.000 tujunlan 1234 NULL
其中time是DataTime类型,当我又如下语句检索时,全部检索出来
select * from T_Log where time>='2010-01-29'
改成这样也是一样结果
select * from T_Log where time>=2010-01-29
改成这样就会一条记录也没有
select * from T_Log where time>='2010-01-29' and time<='2010-01-29'
但是改成这样还是一条也检索不出来
select * from T_Log where time>=2010-01-29 and time<=2010-01-30
除非再改成这样就可以出来前6条记录
select * from T_Log where time>=2010-01-29 and time<='2010-01-30'或者
select * from T_Log where time>='2010-01-29' and time<='2010-01-30'
总结一点规律,就是像这种没有时分秒的时间,数据库会把它默认为00:00:00.000的形式,但是关于为什么单引号在后面时一定要加上这一点就不清楚了