INTERVAL作为sql中关键字
interval在sql中一般表示为时间间隔的意思
常用在date_add()、**date_sub()**函数中,常用于时间的加减法
上述sql表示为当前时间一年后的时间。
interval后可选择的时间粒度:
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,
当时间粒度为多个时,以下划线连接单位。如:YEAR_MONTH
sql演示:
上述sql表示的时当前时间增加一年零一个月。
那么,有个问题,我们在使用interval的时候可不可以使用变量呢?
可以,但是不可以直接写在单位里面,如:
这里会报错:
这里应该把变量放在外面:
下面记录一些特殊时间:
SELECT DATE_FORMAT(now(),'%Y-%m-%d 00:00:00') as '今天开始'
SELECT DATE_FORMAT(now(),'%Y-%m-%d 23:59:59') as '今天结束'
SELECT DATE_FORMAT(DATE_SUB(now(),INTERVAL 1 DAY),'%Y-%m-%d 00:00:00') as '昨天开始'
SELECT DATE_FORMAT(DATE_SUB(now(),INTERVAL 1 DAY),'%Y-%m-%d 23:59:59') as '昨天结束'
SELECT DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE())DAY),'%Y-%m-%d 00:00:00') as '本周开始'
SELECT DATE_FORMAT(DATE_ADD(SUBDATE(CURDATE(),WEEKDAY(CURDATE())),INTERVAL 6 DAY),'%Y-%m-%d 23:59:59') as '本周结束'
SELECT DATE_FORMAT(DATE_SUB(DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE())DAY),INTERVAL 1 WEEK),'%Y-%m-%d 00:00:00') as '上周一'
SELECT DATE_FORMAT(DATE_SUB(DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE())DAY),INTERVAL 1 DAY),'%Y-%m-%d 23:59:59') as '上周末'
SELECT DATE_FORMAT(CURDATE(),'%Y-%m-01 00:00:00') as '本月开始'
SELECT DATE_FORMAT(LAST_DAY(CURDATE()),'%Y-%m-%d 23:59:59') as '本月结束'
SELECT DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 1 MONTH),'%Y-%m-01 00:00:00') as '上月初'
SELECT DATE_FORMAT(LAST_DAY(DATE_SUB(CURDATE(),INTERVAL 1 MONTH)),'%Y-%m-%d 23:59:59') as '上月末'
SELECT CONCAT(YEAR(now()),'-01-01 00:00:00') as '年初'
SELECT CONCAT(YEAR(now()),'-12-31 23:59:59') as '年末'
SELECT DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL DAYOFYEAR(now())-1 DAY),'%Y-%m-%d 00:00:00') as '年初'