设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1558|回复: 2
打印 上一主题 下一主题

[其它] [交流] SQL中日期比较方法

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2011-11-22 11:31:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 鱼儿游游 于 2011-11-22 12:06 编辑

       今天,学习了一下SQL的日期比较,现将把学习心得贴出,供大家参考,不对之处请指正。

方法一、用 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 的形式,才能得到准确的数据。

总结:个人认为方法二较好。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2011-11-22 16:35:37 | 只看该作者
学习一下经验之谈
3#
发表于 2011-11-22 18:33:12 | 只看该作者
学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 23:12 , Processed in 0.087849 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表