我们先创建一个表:

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. php查询,多条件查询

    单条件查询: 1.先要有一张表,显示出表中的数据: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  2. 201521123014 java第一周总结

    201521123014 java第一周总结 1.本周学习总结 刚认识这一门新语言,我就充满了好奇心,想看看Java和学过C语言,C++有什么区别.在这一周的学习中,我认识到,对于初学者而言,Java ...

  3. 教你如何一步步将项目部署到Github

    注册Github账号有半年多的时间,却一直不知道如何将自己做好的项目部署到Github中.看了网上许多的教程,要么一开始就来Git命令行,要么直接就来一堆术语,很少能够真正说中要点,解决我们的烦恼. ...

  4. ASP.NET Web API 基本操作(CRUD)

    上一篇介绍了ASP.NET Web API的基本知识和原理,这一篇我们通过一个更直观的实例,对产品进行CRUD操作(Create/Read/Update/Delete)来继续了解一下它的基本应用. 创 ...

  5. 2017-2-18 net 输入输出语句

    控制台程序的创建,输出,输入语句,定义变量,变量赋值,值覆盖,值拼接,值打印两种数据类型,整形类型转换 知识点: 1.输出语句 Console.WriteLine("");光标换行 ...

  6. Java 集合的简单实现 (ArrayList & LinkedList & Queue & Stack)

    ArrayList 就是数组实现的啦,没什么好说的,如果数组不够了就扩容到原来的1.5倍 实现了迭代器 package com.wenr.collection; import java.io.Seri ...

  7. 数字化工厂解决方案——OA办公自动化与ERP

    移动办公APP/即时通讯 通过集成手机应用,将移动办公引入到企业信息化管理中,能随时随地的完成审批.查询.警报.知会.公告发布.KPI统计和信息推送.系统已经支持苹果系统.安卓系统和微软WP8系统.企 ...

  8. centOS7 mini配置linux服务器(三) 配置防火墙以及IPtables切换

    一.firewall介绍 CentOS 7中防火墙是一个非常的强大的功能,在CentOS 6.5中在iptables防火墙中进行了升级了. 1.官方介绍 The dynamic firewall da ...

  9. C++:基础篇-32位和64位系统区别及字节数

    今儿面试了一个刚刚毕业的,但是不知道一个int.long.double这几个都是多少位,我给你们总结一下哈: 常用数据类型对应字节数  可用如sizeof(char),sizeof(char*)等得出 ...

  10. JAVA基础知识系列---进程、线程安全

    1 相关概念 1.1 临界区 保证在某一时刻只有一个线程能访问数据的简便方法,在任意时刻只允许一个线程对资源进行访问.如果有多个线程试图同时访问临界区,那么在有一个线程进入后,其他所有试图访问临界区的 ...