单车男

每天进步一点点,积累下来就不得了...
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于DateTime类型和Date类型比较时的困惑

Posted on 2012-06-09 18:25  单车男  阅读(673)  评论(2编辑  收藏  举报
 1 CREATE TABLE T_TEST(ID INT IDENTITY PRIMARY KEY,CreateTime DATE)
 2 INSERT INTO T_TEST SELECT '2011-11-04'
 3 UNION ALL SELECT '2011-11-04'
 4 UNION ALL SELECT '2011-11-04'
 5 UNION ALL SELECT '2011-11-05'
 6 UNION ALL SELECT '2011-11-05'
 7 UNION ALL SELECT '2011-11-05'
 8 
 9 SELECT * FROM T_TEST
10 
11 SELECT COUNT(*) FROM T_TEST 
12 WHERE  CreateTime>='2011-11-04 00:00:00' AND CreateTime <'2011-11-04 23:59:59'
13 --等价于(返回0行 不太明白????)
14 
15 --传入参数为datetime类型(返回3行,这个可以理解,但和上面又有啥区别呢?不解)
16 SP_executesql N'
17     select COUNT(*) 
18     from T_TEST
19     where CreateTime>=@BeginTime and CreateTime<@EndTime
20 ',N'@BeginTime datetime,@EndTime datetime',
21 @BeginTime='2011-11-04 00:00:00',
22 @EndTime='2011-11-04 23:59:59'    
23 
24 --修改了传参类型为date类型(返回0行,这个也可以理解)
25 SP_executesql N'
26     select COUNT(*) 
27     from T_TEST
28     where CreateTime>=@BeginTime and CreateTime<@EndTime
29 ',N'@BeginTime date,@EndTime date',
30 @BeginTime='2011-11-04 00:00:00',
31 @EndTime='2011-11-04 23:59:59'
32 
33 --又看下面的例子
34 DECLARE @EndTime datetime
35  SET @EndTime='2011-11-04 23:59:59' 
36 DECLARE @CreateTime DATE
37  SET @CreateTime='2011-11-04' 
38 
39 IF @CreateTime<@EndTime  --打印出来,可以理解,但为啥前面的不对呢?
40  PRINT '@CreateTime<@EndTime'