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 ...
随机推荐
- mac os x在PC上安装
系统安装之前的准备工作及安装过程简介 前面我们已经提到,苹果电脑虽然已经采用了x86架构的Intel处理器,但其官方并不提供在非苹果电脑上安装Mac OS的支持.所以,要想在普通PC/笔记本电脑上安装 ...
- 学生管理系统(C语言)
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 3 #define LEN ...
- protocol error, got 'n' as reply type byte
centos6.5上安装redis3.2版本,本地访问redis报错protocol error, got 'n' as reply type byte 解决办法 在redis配置文件redis.co ...
- devexpress实现单元格合并以及依据条件合并单元格
1.devexpress实现单元格合并非常的简单,只要设置属性[AllowCellMerge=True]就可以了,实现效果如下图: 2.但是在具体要求中并非需要所有的相同单元格都合并,可能需要其他的条 ...
- oracle按某个字段分组然后从每组取出最大的一条纪录
需求:查询各个设备存在未消缺的缺陷,取缺陷等级最高的,作为这个设备当前的缺陷等级: 数据源: select t.device_id, t.defect_level from sp_pd_defect ...
- 3D Touch开发全面教程之Peek and Pop - 预览和弹出
## 3D Touch开发全面教程之Peek and Pop - 预览和弹出 --- ### 了解3D Touch 在iPhone 6s和iPhone 6s Plus中Apple引入了3D Touch ...
- SerfJ REST
SerfJ提供了一个MVC架构,但它不包含任何模型,其主要特点是使用控制器collerlor,通过这些collerlor管理REST请求.可帮助你开发优雅的MVC架构的应用,使用惯例重于配置的思路,无 ...
- mfc--使用ShellExecute打开另一个可执行程序
ShellExecute(sFile [, vArguments] [, vDirectory] [, vOperation] [, vShow]) ShellExecute(NULL,"o ...
- jquery考试纠错笔记.
1. 获取元素范围大小顺序依次为: $(#one).siblings("div")>$("#one~div")>$("#one +div& ...
- spring-framework-reference阅读笔记(一)
Spring Framework Runtime 首先需要对Spring FrameWok框架有个直观的认识 Java日志框架的发展史 在读到Spring依赖JCL的时候,对Java的日志系统做点普及 ...