我们先创建一个表:

CREATE  TABLE `student` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(10) NULL COMMENT '姓名' ,
  `age` TINYINT NULL COMMENT '年龄' ,
  `registTime` DATETIME NULL COMMENT '入学时间' ,
  PRIMARY KEY (`id`) );

插入测试数据:

INSERT INTO `student` (`id`, `name`, `age`, `registTime`) VALUES ('1', '小明', '20', '2016-01-01 23:59:59');
INSERT INTO `student` (`id`, `name`, `age`, `registTime`) VALUES ('2', '小红', '32', '2016-01-02 00:00:00');
INSERT INTO `student` (`id`, `name`, `age`, `registTime`) VALUES ('3', '小曾', '32', '2016-01-03 04:30:03');
INSERT INTO `student` (`id`, `name`, `age`, `registTime`) VALUES ('4', '小鹏', '14', '2016-01-03 23:59:59');
INSERT INTO `student` (`id`, `name`, `age`, `registTime`) VALUES ('5', '小李', '25', '2016-01-04 00:00:00'); 

SQL查询常用的几种查询方法有between查询和字符串拼接查询两种方式。

用 between 查询

在MySQL中 between包括两边的边界的,即下面两个SQL是等价的。

select * from student where age between 25 and 32;
select * from student where age >= 25 and age <= 32;

运行结果:

可以看到上面的查询将 age 处于边界的 23、25 都查询出来了。

用于日期的查询时,也是一样包括两边边界。不过当日期字符串中没有写时分秒的时候,MySQL会自动补上时分秒。而且是第一个日期补上 00:00:00,第二个日期补上 23:59:59。

select * from student where date_format(registTime, '%Y-%m-%d') between '2016-01-02' and '2016-01-03';

其实上面的SQL等价于:

select * from student where registTime >= '2016-01-02 00:00:00' and registTime <= '2016-01-03 23:59:59';

运行结果:

从上面结果可以看出,第 1 条和第 3 条刚好是边界上的数据,也被查询出来了。

因为between在不同数据库的表现不一样,所以我们一般都不建议用between来进行SQL查询,而用字符串拼接的形式进行日期区间查询,这样比较简单易懂,又不容易造成多义。并且在写日期的时候,把时分秒都写上。

字符串拼接查询

select * from student where datetime >= '2016-01-01 00:00:00' and datetime <= '2016-01-02 00:00:00';

参考资料:http://www.w3school.com.cn/sql/func_date_format.asp

SQL语句中的日期查询的更多相关文章

  1. 存储过程往拼接的sql语句中传递日期值

    存储过程往拼接的sql语句中传递日期值 declare @start datetime declare @end datetime set @start='2014-3-1' set @end='20 ...

  2. [转载]SQL语句中的日期计算

    1. 本月的第一天SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0) 2. 本月的最后一天SELECT  dateadd(ms,-3,DATEADD( ...

  3. Mybatis中sql语句中的in查询,一定要判断null的情况

    不严谨的写法,可能会报错:in (),这种情况不符合mysql的语法. select from loanwhere LOAN_ID in <foreach item="item&quo ...

  4. sql语句中【模糊查询like的使用】

    1.like的使用: 在数据库软件中进行测试时,书写的格式是: 比如: select * from fdx.dbo.[User] where 1=1 and name like '%'+'a'+'%' ...

  5. 分享一篇:sql语句中使用子查询,可能会引起查询的性能问题,查询时间会变长

    前段时间,做自动化适配的时候,查找需要的数据的时候,使用到了dblink,跨数据库实例进行访问,整段sql拼接再加上dblink,在plsql查询的时候,性能还不是很长时间,最多2分钟可以查到,前期调 ...

  6. SQL语句中关于日期的操作(非常的有用)

    在SQL Server 里的日期数据,我们经常可以用 字段<='2008-5-20'这样的表达式,但在oracle却不可以,因为数据类型不一样 字段是date型,'2008-5-20'是字符型, ...

  7. Mybatis中sql语句中的in查询,判断null和size为0的情况

    不严谨的写法,可能会报错:in (),这种情况不符合SQL的语法,导致程序报错. 如果简单只做非空判断,这样也有可能会有问题:本来in一个空列表,应该是没有数据才对,却变成了获取全部数据! 所以一个比 ...

  8. SQL语句中日期的计算方法大全

    sql语句中的日期处理一.日期處理函數1.日期增減函數 dateadd(datepart,number,dtae) datepart:是規定應向日期的哪一部分返回新值的參數.下列是sql server ...

  9. SQL Server参数化SQL语句中的like和in查询的语法(C#)

    sql语句进行 like和in 参数化,按照正常的方式是无法实现的 我们一般的思维是: Like参数化查询:string sqlstmt = "select * from users whe ...

随机推荐

  1. android学习12——重载SurfaceView一些方法的执行顺序

    先看代码 public class SurfaceViewActivity extends Activity { @Override public void onCreate(Bundle saved ...

  2. IOS高级开发~开机启动&无限后台运行&监听进程

    一般来说, IOS很少给App后台运行的权限. 仅有的方式就是 VoIP. IOS少有的为VoIP应用提供了后台socket连接,定期唤醒并且随开机启动的权限.而这些就是IOS上实现VoIP App的 ...

  3. 网站Web业务架构从小到大演变

    有一天,我突发奇想创建了一个站点,基于 LNMP 架构,起初只有我自己访问,后来因为我点儿正,访问量越来越大,所以最终导致下面的架构演变. 1.单台机器 单台机器因为只是一个小站,访问量一天也没有多少 ...

  4. 细谈position属性:static、fixed、relative与absolute

    学习WEB有些时日了,对DOM中的定位概念有些模糊,特地花了一个下午的时间搜资料.整理写下这篇随笔. 首先,我们要清楚一个概念:文档流. 简单的讲,就是窗体自上而下分成一行一行,并在每行中按照从左到右 ...

  5. Debugging

    Debugging Debugging A debugger is an application that enables a developer to observe and correct pro ...

  6. 简单聊聊TestNG中的并发

    前言 最近在做项目里的自动化测试工作,使用的是TestNG测试框架,主要涉及的测试类型有接口测试以及基于业务实际场景的场景化测试.由于涉及的场景大多都是大数据的作业开发及执行(如MapReduce.S ...

  7. .NET的HTTP辅助类:RestSharp

    示例: var client = new RestClient("http://example.com");// client.Authenticator = new HttpBa ...

  8. [lua] mac上如何编译snapshot(检测Lua中的内存泄露)

    最近我们的unity手游频繁闪退,只要进入战斗场景,之后一段时间就会闪退,如果是在unity编辑器中则会报出not enough memory的错误!猜测应该是有内存泄漏: 由于我们使用了tolua, ...

  9. .NET客户端实现Redis中的管道(PipeLine)与事物(Transactions)

    序言 Redis中的管道(PipeLine)特性:简述一下就是,Redis如何从客户端一次发送多个命令,服务端到客户端如何一次性响应多个命令. Redis使用的是客户端-服务器模型和请求/响应协议的T ...

  10. Unity中溶解shader的总结

    在实际的游戏工程中,经常美术和策划会提出溶解的表现要求.比如子弹在飞行的时候,弹道不断的消融:角色受到大型炮弹的攻击,在击飞的时候不断的消融等等诸如此类的表现.一般的消融都是结合粒子系统来实现,通过给 ...