oracle:
select trunc($date,'yyyy-mm-dd'),'Q') from dual
转换成mysql的写法有两种:
方式一
-- 季度的第一个月的第一天
select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-3 month),'%Y-%m-'),'01') from dual
-- 季度第二个月的第一天
select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-2 month),'%Y-%m-'),'01') from dual
-- 季度第三个月的第一天
select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-1 month),'%Y-%m-'),'01') from dual
方式二
-- $date 是传入日期的变量
select case when QUARTER($date) =1 then DATE_FORMAT(now(),'%Y-01-01')
when QUARTER($date) =2 then DATE_FORMAT(now(),'%Y-04-01')
when QUARTER($date) =3 then DATE_FORMAT(now(),'%Y-07-01')
else DATE_FORMAT(now(),'%Y-10-01' END
方式三
select CONCAT(year(now()),'-',elt(QUARTER(now()),1,4,7,10),'-','01')
elt函数具体的用法可参考这篇文章,在这里就不多做赘述啦
elt mysql 大于等于_MySQL数据库中ELT系统函数有哪些功能呢?_weixin_39683241的博客-CSDN博客