“携手创作,共同成长!这是我参与「掘金日新计划 · 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')