在mysql中,有时做数据集的时候会有一些筛选数据日期的条件,比如在历史数里面筛选出月末数据来做月报,就可以使用以下子查询:
显示本年度所有月份的日期值,可以利用初始化参数去显示:
调整date_format函数可以显示月初月末了
代码SQL:
SELECT DATE_FORMAT(ADDDATE(DATE_SUB(CURDATE(),INTERVAL dayofyear(now()) -1 day),INTERVAL mon.id -1 month),'%Y-%m') as 当年月份
from (SELECT @x := @x + 1 as id
from (SELECT 1 UNION SELECT 2 UNION SELECT 3 ) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) xc2,
(SELECT @x := 0) xc0) as mon;
显示本年度所有季度末的日期值,同样可以修改成这样显示:
代码SQL:
SELECT LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval (qua.id)*3-1 month) 当年季度末
from (SELECT @x := @x + 1 as id from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) xc,
(SELECT @x := 0) xc0) as qua
;
提示:
不要在同一个查询重复使用同一个参数名,不然有失效的问题!!!