mysql和mybatisPlus实现:datetime类型的字段范围查询

前提说明

数据库在存储数据时,我们为了精确一下时间,便会把改时间类型的字段设置为datetime类型;
在过滤数据库数据时,我们又需要对该字段进行一个范围的过滤
由此,便出现了这篇博客

datetime数据类型

在MySQL中,datetime数据类型用于保存日期和时间的值。它的格式为YYYY-MM-DD HH:MM:SS,其中YYYY表示年份,MM表示月份,DD表示日期,HH表示小时,MM表示分钟,SS表示秒

下面以下述student表举例
在这里插入图片描述

sql脚本

between…and…

BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期

语法

SELECT column1, column2, ...
FROM table_name
WHERE column BETWEEN value1 AND value2;

参数说明:

  • column1, column2, …:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。
  • column:要查询的字段名称。
  • value1:范围的起始值。mysql里面是包含当前值的
  • value2:范围的结束值。mysql里面是包含当前值的

注意:在不同的数据库中,BETWEEN 操作符会产生不同的结果

  1. 在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
  2. 在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
  3. 在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。

使用

SELECT * FROM student WHERE create_time  between '2019-07-25 00:00:33' and '2019-07-25 00:54:33'

通过这个sql,可以获取到李二这条数据

大小于号

使用

SELECT * FROM student WHERE create_time  >= '2019-07-25 00:00:33' and reate_time  <= '2019-07-25 00:54:33'

通过这个sql,可以获取到李二这条数据

与between…and区别

between…and…:

  1. between and的两个临界值不要乱调换顺序(数值小的放前面,数值大的放后面)
  2. 提高语句的简洁度

表达式 between 下界值 and 上界值
等价于
表达式 >= 下界值 and 表达式 <= 上界值

UNIX_TIMESTAMP()函数

语法

1、UNIX_TIMESTAMP() :若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数,得到当前时间戳
2、UNIX_TIMESTAMP(date) :若用date 来调用 UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字

使用

SELECT * FROM student WHERE  UNIX_TIMESTAMP(create_time)  between UNIX_TIMESTAMP('2019-07-25 00:00:33') and UNIX_TIMESTAMP('2019-07-25 00:54:33')

通过这个sql,可以获取到李二这条数据

java中使用Unix timestamp

获取现在时间的Unix timestamp

方法1

long unixTimestamp = Instant.now().getEpochSecond();
System.out.println(

猜你喜欢

转载自blog.csdn.net/yyuggjggg/article/details/132475528