下面这几条都可以获取到上个月的第一天
1、select CONCAT(date_format(now(),'%Y-%m'),'-01') -INTERVAL '1' month
从里往外解剖:
now()函数是获取当前日期
date_format(date,format) 函数用于以不同的格式显示日期/时间数据。
date 参数是合法的日期。format 规定日期/时间的输出格式
concat(①,②)函数意思是将①和②拼接起来
interval 关键字可以用于计算时间间隔
例1:查询当前时间之前2个小时的日期:
SELECT NOW()-INTERVAL '2' HOUR;
天就是 day,月就是month,年 year。
2、select date_add(curdate(),interval -day(curdate())+1 day) -INTERVAL 1 month
CURDATE() 函数返回当前的日期
date_add()函数向日期添加指定的时间间隔
3、select date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now())-1 day),interval 2 month)
DATE_SUB() 函数从日期减去指定的时间间隔
EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
语法:EXTRACT(unit FROM date)
4、select date_add(curdate()-day(curdate())+1,interval -1 month)