mysql 常用的时间格式的数据类型有几种:date、datetime、time、timestamp
// 2022-06-27
SELECT CURDATE();
SELECT CURRENT_DATE();
// 10:18:50
SELECT CURTIME();
SELECT CURRENT_TIME();
// 2022-06-27 10:21:58
SELECT CURRENT_TIMESTAMP();
// 2022-06-27 10:21:58
SELECT NOW();
// 2022-06-27 10:21:58
SELECT SYSDATE();
MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR、YEAR_MONTH
SELECT EXTRACT(HOUR FROM '2022-06-27 10:21:58'); // 10
// 2022-06-27
SELECT DATE('2022-06-27 10:21:58');
SELECT DATE('2022-06-27');
SELECT DAY('2022-06-27'); // 27
SELECT DAY('2022-06-27 10:21:58'); // 27
SELECT DAYNAME('2022-06-27'); // Monday
SELECT DAYNAME('2022-06-27 10:21:58'); // Monday
SELECT DAYOFMONTH('2022-06-27'); // 27
SELECT DAYOFMONTH('2022-06-27 10:21:58'); // 27
SELECT DAYOFWEEK('2022-06-27'); // 2
SELECT DAYOFWEEK('2022-06-27 10:21:58'); // 2
SELECT DAYOFYEAR('2022-06-27'); // 178
SELECT DAYOFYEAR('2022-06-27 10:21:58'); // 178
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d'); // 2022-06-27
SELECT TO_DAYS('0000-01-02'); // 2
SELECT TO_DAYS(NOW()); // 738698
SELECT CURDATE(); // 今天 2022-06-27
SELECT ADDDATE(CURDATE(),INTERVAL 1 DAY); // 明天 2022-06-28
SELECT ADDDATE(CURDATE(),INTERVAL 1 MONTH); // 一个月后 2022-07-27
SELECT CURDATE(); // 2022-06-27
SELECT SUBDATE(CURDATE(),2); // 2022-06-25
SELECT PERIOD_ADD(202201,6); // 202207
SELECT PERIOD_DIFF(202207,202201); // 月份差值 6
// now() 2022-06-27
SELECT QUARTER(NOW()); // 2
组合方式不仅仅只有一种,下面也不是列举了所有的实现组合
SELECT * FROM tab where DATE(create_time) = CURDATE();
SELECT * FROM tab where TO_DAYS(create_time) = TO_DAYS(NOW());
SELECT * FROM tab where DATE(create_time) = SUBDATE(CURDATE(),1);
SELECT * FROM tab where DATE(create_time) >= SUBDATE(CURDATE(),7);
SELECT * FROM tab where SUBDATE(CURDATE(),INTERVAL 7 DAY) <= DATE(create_time);
SELECT * FROM tab where DATE_FORMAT(create_time,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
SELECT * FROM tab where PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'), DATE_FORMAT(create_time,'%Y%m')) = 1;
SELECT * FROM tab where QUARTER(create_time) = QUARTER(now());
SELECT * FROM tab where QUARTER(create_time) = QUARTER(DATE_SUB(now(), interval 1 QUARTER));
SELECT * FROM tab where YEAR(create_time) = YEAR(NOW());
SELECT * FROM tab where YEAR(create_time) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));
SELECT * FROM tab where YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW());
SELECT * FROM tab where YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW()) - 1;
SELECT * FROM tab where create_time BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) and NOW();