SQL语句中的日期查询
我们先创建一个表:
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语句中的日期查询的更多相关文章
- 存储过程往拼接的sql语句中传递日期值
存储过程往拼接的sql语句中传递日期值 declare @start datetime declare @end datetime set @start='2014-3-1' set @end='20 ...
- [转载]SQL语句中的日期计算
1. 本月的第一天SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2. 本月的最后一天SELECT dateadd(ms,-3,DATEADD( ...
- Mybatis中sql语句中的in查询,一定要判断null的情况
不严谨的写法,可能会报错:in (),这种情况不符合mysql的语法. select from loanwhere LOAN_ID in <foreach item="item&quo ...
- sql语句中【模糊查询like的使用】
1.like的使用: 在数据库软件中进行测试时,书写的格式是: 比如: select * from fdx.dbo.[User] where 1=1 and name like '%'+'a'+'%' ...
- 分享一篇:sql语句中使用子查询,可能会引起查询的性能问题,查询时间会变长
前段时间,做自动化适配的时候,查找需要的数据的时候,使用到了dblink,跨数据库实例进行访问,整段sql拼接再加上dblink,在plsql查询的时候,性能还不是很长时间,最多2分钟可以查到,前期调 ...
- SQL语句中关于日期的操作(非常的有用)
在SQL Server 里的日期数据,我们经常可以用 字段<='2008-5-20'这样的表达式,但在oracle却不可以,因为数据类型不一样 字段是date型,'2008-5-20'是字符型, ...
- Mybatis中sql语句中的in查询,判断null和size为0的情况
不严谨的写法,可能会报错:in (),这种情况不符合SQL的语法,导致程序报错. 如果简单只做非空判断,这样也有可能会有问题:本来in一个空列表,应该是没有数据才对,却变成了获取全部数据! 所以一个比 ...
- SQL语句中日期的计算方法大全
sql语句中的日期处理一.日期處理函數1.日期增減函數 dateadd(datepart,number,dtae) datepart:是規定應向日期的哪一部分返回新值的參數.下列是sql server ...
- SQL Server参数化SQL语句中的like和in查询的语法(C#)
sql语句进行 like和in 参数化,按照正常的方式是无法实现的 我们一般的思维是: Like参数化查询:string sqlstmt = "select * from users whe ...
随机推荐
- php查询,多条件查询
单条件查询: 1.先要有一张表,显示出表中的数据: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- 201521123014 java第一周总结
201521123014 java第一周总结 1.本周学习总结 刚认识这一门新语言,我就充满了好奇心,想看看Java和学过C语言,C++有什么区别.在这一周的学习中,我认识到,对于初学者而言,Java ...
- 教你如何一步步将项目部署到Github
注册Github账号有半年多的时间,却一直不知道如何将自己做好的项目部署到Github中.看了网上许多的教程,要么一开始就来Git命令行,要么直接就来一堆术语,很少能够真正说中要点,解决我们的烦恼. ...
- ASP.NET Web API 基本操作(CRUD)
上一篇介绍了ASP.NET Web API的基本知识和原理,这一篇我们通过一个更直观的实例,对产品进行CRUD操作(Create/Read/Update/Delete)来继续了解一下它的基本应用. 创 ...
- 2017-2-18 net 输入输出语句
控制台程序的创建,输出,输入语句,定义变量,变量赋值,值覆盖,值拼接,值打印两种数据类型,整形类型转换 知识点: 1.输出语句 Console.WriteLine("");光标换行 ...
- Java 集合的简单实现 (ArrayList & LinkedList & Queue & Stack)
ArrayList 就是数组实现的啦,没什么好说的,如果数组不够了就扩容到原来的1.5倍 实现了迭代器 package com.wenr.collection; import java.io.Seri ...
- 数字化工厂解决方案——OA办公自动化与ERP
移动办公APP/即时通讯 通过集成手机应用,将移动办公引入到企业信息化管理中,能随时随地的完成审批.查询.警报.知会.公告发布.KPI统计和信息推送.系统已经支持苹果系统.安卓系统和微软WP8系统.企 ...
- centOS7 mini配置linux服务器(三) 配置防火墙以及IPtables切换
一.firewall介绍 CentOS 7中防火墙是一个非常的强大的功能,在CentOS 6.5中在iptables防火墙中进行了升级了. 1.官方介绍 The dynamic firewall da ...
- C++:基础篇-32位和64位系统区别及字节数
今儿面试了一个刚刚毕业的,但是不知道一个int.long.double这几个都是多少位,我给你们总结一下哈: 常用数据类型对应字节数 可用如sizeof(char),sizeof(char*)等得出 ...
- JAVA基础知识系列---进程、线程安全
1 相关概念 1.1 临界区 保证在某一时刻只有一个线程能访问数据的简便方法,在任意时刻只允许一个线程对资源进行访问.如果有多个线程试图同时访问临界区,那么在有一个线程进入后,其他所有试图访问临界区的 ...