Mysql查询当前日期近一周的数据

449 阅读2分钟

“携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

Mysql查询当前日期近一周的数据

1、查询近一周的数据

select A from tableA where time >= date_sub(curdate(), internal 7 day);

获取当前日期:

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2022-08-06 |
+------------+
1 row in set (0.02 sec)

获取当前日期时间:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2022-08-06 19:51:06 |
+---------------------+
1 row in set (0.01 sec)

获取当前时间:

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 19:51:26  |
+-----------+
1 row in set (0.01 sec)

分别获取年、月、日、时、分、秒

mysql> select extract(year from now());    //2022
mysql> select extract(month from now());   //8
mysql> select extract(day from now());     //6
mysql> select extract(hour from now());    //19
mysql> select extract(minute from now());  //58
mysql> select extract(second from now());  //46

获取当前日期前一天:

select date_sub(curdate(), interval 1 day);

获取当前日期后一天:

select date_sub(curdate(), interval -1 day);
或者
select date_add(curdate(), interval 1 day);

其它间隔

interval 1 year\month\day\hour\minute\second

2、根据format格式化日期

select date_format(DT,'%%Y-%%m-%%d');
select time_format(DT,'%%H-%%i-%%s');//time_format只能用于时间的格式化

3、TIMESTAMPDIFF函数

TIMESTAMPDIFF函数用于计算两个日期的时间差
语法结构:

select TIMESTAMPDIFF(unit,datetime1,datetime2);

unit:日期比较返回的时间差单位

SECOND:秒
MINUTE:分钟
HOUR:小时
DAY:天
WEEK:星期
MONTH:月
QUARTER:季度
YEAR:年

TIMESTAMPDIFF函数返回datetime2-datetime1的结果,其中datetime1和datetime2可以是DATE类型或者DATETIME类型。
TIMESTAMPDIFF函数允许其搭配使用的参数datetime1和datetime2具有混合类型。datetime1是DATE类型值,datetime2是DATETIME类型值,TIMESTAMPDIFF函数会将datetime1自动转换成DATETIME类型值(在日期后面加上时间“00:00:00”)

在实际的场景中,可以使用NOW()、TIMESTAMPDIFF()函数计算年龄

按照出生日期计算年龄:

select TIMESTAMPDIFF(YEAR,user_age,NOW())AS age from user;

其它函数

将日期转换成时间戳
select unix_timestamp('2022-08-06');
将时间戳转换成日期
select from_unixtime(1659715200);
拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)
SELECT MAKEDATE(2022,31); -- '2022-01-31' 
SELECT MAKEDATE(2022,32); -- '2022-02-01'
SELECT MAKETIME(20,33,47); -- '20:33:47'
字符串转换为日期
SELECT STR_TO_DATE('2022/8/6','%Y/%m/%d')