前提说明
数据库在存储数据时,我们为了精确一下时间,便会把改时间类型的字段设置为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 操作符会产生不同的结果
- 在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
- 在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
- 在某些数据库中,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…:
- between and的
两个临界值不要乱调换顺序(数值小的放前面,数值大的放后面)
- 提高语句的简洁度
表达式 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(