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 ...
随机推荐
- devexpress表格gridcontrol实现分组,并根据分组计算总计及平均值
1.devexpress表格控件gridcontrol提供了强大的分组功能,你几乎不用写什么代码就可以实现一个分组功能,并且可根据分组计算总计和平均值.这里我例举了一个实现根据班级分组计算班级总人数, ...
- android学习18——对PathMeasure中getPosTan的理解
考虑这样的场景:要实现物体沿直接或曲线运动的效果.这就要算出某个时刻t,物体的坐标.getPosTan就是用来求坐标的.看下面的代码: float step = 0.0001f; Path path ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
- 【转】jqGrid学习之安装
jqGrid安装很简单,只需把相应的css.js文件加入到页面中即可. 按照官网文档: /myproject/css/ ui.jqgrid.css /u ...
- 简单聊聊HTTP/TCP/IP协议
经过几天的面试,有很多公司的面试官都会问到是否了解HTTP/TCP/IP协议? 一遇到这个问题,就一脸懵逼,虽然是计算机基层的东西,看来是必须得了解的,回到家之后,就查找了一些资料,整理了一篇博客,简 ...
- 11g R2 RAC启动关闭步骤
1.关闭监听 /u01/app/11.2.0/grid/bin/srvctl stop listener -n redhat-rac01 /u01/app/11.2.0/grid/bin/srvctl ...
- 【JS】JavaScript中的执行环境与作用域
JavaScript中的执行环境定义了变量或函数有权访问的数据(每个函数都有自己的执行环境),全局执行环境是最外围的执行环境,在浏览器中,全局执行环境就是window对象,所以所有的全局变量和函数都是 ...
- html to pdf
C++ Library to Convert HTML to PDF html2pdf PrinceXML 收费 CutePDF Ghostscript PDFDoc VisPDF PDFDoc Sc ...
- Sort List leetcode
这个题一开始本想用快速排序的,但是想了20分钟都没有头绪,难点在于快速排序的随机访问无法用链表实现,不过如果可以实现快速排序partition函数就可以了,但是这可能比较复杂,于是改用其他排序方法,上 ...
- selenium+python 自动化中界面滚动条操作方法
虽然webdriver提供了操作浏览器的前进和后退的方法,但对于浏览器滚动条并没有提供相应的操作方法,以下使用的方法: 借助JavaScript来控制浏览器的滚动条,webdriver提供了execu ...