SQL中获取两日期之间的值

2013-07-23 16:46:57 Access交流网触屏版 已读

方法一、用 BETWEEN 操作符

       操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
但,不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。

        SELECT * FROM [员工表]
        WHERE [登记日期]BETWEEN  '2011-11-01‘  AND '2011-11-23’

      上述SQL语句在某些数据库会列出介于 "2011-11-01" 和 "2011-11-23" 之间的人,但不包括 "2011-11-01" 和 "2011-11-23"这两天登记的人员 ;某些数据库会列出介于 "2011-11-01" 和 "2011-11-23" 之间并包括 "2011-11-01" 和 "2011-11-23"这两天登记的人员;而另一些数据库会列出介于 "2011-11-01" 和 "2011-11-23" 之间的人,包括 "2011-11-01"这一天登记的人员 、但不包括 "2011-11-23"这一天登记的人员 。
       如使用此方法,检查你的数据库是如何处理 BETWEEN....AND 操作符的,是非常重要的事情!

方法二、利用SQL提供的日期转换函数

         SELECT * FROM [员工表]
         WHERE  CONVERT(varchar(10), CAST([登记日期] AS datetime), 120) >='2011-11-01'  AND
                       CONVERT(varchar(10), CAST([登记日期] AS datetime), 120) <='2011-11-23'

       上述SQL语句,能准确返回:2011-11-01 至 2011-11-23 之间登记的所有人员(包括:包括 "2011-11-01" 和 "2011-11-23"这两天登记的人员)。
       注意:CONVERT(varchar(10), CAST([登记日期] AS datetime), 120) 返回的字符串是: yyyy-mm-dd 的形式。
                因此,使用此方法比较日期前,记得把日期条件的值变为:yyyy-mm-dd 的形式,才能得到准确的数据。 

总结:个人认为方法二较好。
Powered by MetInfo 5.3.12 ©2008-2021 www.metinfo.cn