MySQL按时间查询,date、datetime和timestamp类型查询参数和返回的数据范围是不同的

您所在的位置:网站首页 mysql日期yyyymmdd MySQL按时间查询,date、datetime和timestamp类型查询参数和返回的数据范围是不同的

MySQL按时间查询,date、datetime和timestamp类型查询参数和返回的数据范围是不同的

2023-08-19 03:24| 来源: 网络整理| 查看: 265

按时间范围查询,你一定纠结过开始时间和结束时间要不要格式化为00:00:00和23:59:59,也一定纠结过数据库的时间是按照什么类型比较的,between and可以用吗?反正我是纠结过。

数据库时间比较是按照什么类型去比较? 你一定见过按时间查询的SQL,时间参数用''修饰,那我们可以理解为数据库时间表面上是按字符串类型(字典顺序)去比较的,实战中我们也是这样用的,但实际上数据库时间是按照时间戳比较的(数据库源码中应该可以找到,反正我没看过源码)。我们不需要知道它按什么类型比较,只需要知道SQL用字符串就可以实现时间范围查询。

between and可以用于时间范围查询吗? 当然可以,但是对于不同类型的时间,应该使用相应的数据去查询,否则查询可能不是预期的结果集。

对于date,参数应该是 年月日 格式,例如between '2019-07-18' and '2019-07-18' 对于datetime/timestamp,参数应该是 年月日时分秒 格式,例如between '2019-07-18 00:00:00' and '2019-07-18 23:59:59'

以年月日格式为例(between '2019-07-18' and '2019-07-18'),MySQL查询的数据的范围如下:

类型数据的开始时间数据的结束时间date以 2019-07-18 00:00:00 开始以 2019-07-18 23:59:59 结束datetime以 2019-07-18 00:00:00 开始以 2019-07-18 00:00:00 结束timestamp以 2019-07-18 00:00:00 开始以 2019-07-18 00:00:00 结束

示例

数据如下,均按照年月日的参数格式查询数据 在这里插入图片描述

date查询

select * from time_test where date_type between '2019-07-16' and '2019-07-18' ORDER BY date_type; select * from time_test where date_type >= '2019-07-16' and date_type = '2019-07-16' and datetime_type = '2019-07-16' and timestamp_type


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3