时间的获取
NOW() | CURDATE() | CURTIME() |
---|
2021-08-23 13:37:46 | 2021-08-23 | 13:38:48 |
DATE_SUB()
获取当前日期前一天
获取当前日期的前一天:SELECT?DATE_SUB(CURDATE(), INTERVAL?1 DAY) 获取当前日期后两天:SELECT?DATE_SUB(CURDATE(), INTERVAL?-2 DAY)
获取当前日期的前10秒:SELECT?DATE_SUB(CURTIME(), INTERVAL?10?SECOND)
获取当前日期的前10分钟:SELECT?DATE_SUB(NOW(), INTERVAL?10?MINUTE)
其他的一些例子:
date_sub(‘2021-08-23’,interval 1 day) 表示 2021-08-22
date_sub(‘2021-08-23’,interval 0 day) 表示 2021-08-23
date_sub(‘2021-08-23’,interval -1 day) 表示 2021-08-24
date_sub(curdate(),interval 1 day) 表示 2021-08-22
date_sub(curdate(),interval -1 day) 表示 2021-08-24
date_sub(curdate(),interval 1 month) 表示 2021-07-23
date_sub(curdate(),interval -1 month) 表示 2021-09-23
date_sub(curdate(),interval 1 year) 表示 2020-08-23
date_sub(curdate(),interval -1 year) 表示 2022-08-23
DATE_ADD()
用来对日期进行加减
-- 当前时间减少10秒
select date_add(now(),interval -10 SECOND)
-- 当前时间增加10分钟
select date_add(now(),interval 10 DAY_MINUTE)
-- 得到当前时间增加1个小时
select date_add(now(),interval 1 hour)
-- 得到当前时间减少2个小时
select date_add(now(),interval -2 hour)
-- 得到当前时间增加1天
select date_add(now(),interval 1 day)
-- SECOND 和 DYA_SECOND 效果一致
-- 增加一天一小时一分一秒
select date_add(now(),interval '1 1:1:1' DAY_SECOND)
其他示例:
-- 已知有表 table_S
CREATE TABLE `table_S` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`value` int(9) unsigned NOT NULL,
`times` datetime NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
-- 获得该时间段前2S内的数据个数
SELECT COUNT(*) FROM table_S WHERE times BETWEEN
DATE_SUB('2022-03-29 07:40:16',INTERVAL 2 SECOND) AND '2022-03-29 07:40:16';
-- 获得当前时段前5分钟的数据
SELECT * table_S WHERE times BETWEEN
DATE_SUB(NOW(),INTERVAL 5 MINUTE) AND NOW();
|